anchor.diff:    static DoubleLinkedQueue<_Timer> _timers;
   
     static ReceivePort _receivePort;
  +  static bool _handling_callbacks = false;
   
     var _callback;
     int _milliSeconds;
  
positive.code:     if (_callback !== null) {
  
        DoubleLinkedQueueEntry<_Timer> entry = _timers.firstEntry();
        if (entry === null) {
          _createTimerHandler();
        }
  
        while (entry !== null) {
          if (_wakeupTime < entry.element._wakeupTime) {
            entry.prepend(this);
  
negative.code: 
  
    void _notifyEventHandler() {
      if (_handling_callbacks) {
        // While we are already handling callbacks we will not notify the event
        // handler. _handleTimeout will call _notifyEventHandler once all pending
        // timers are processed.
        return;
      }
  
      if (_timers.firstEntry() === null) {
        // No pending timers: Close the receive port and let the event handler
        // know.
        if (_receivePort !== null) {
          EventHandler._sendData(-1, _receivePort, _NO_TIMER);
          _shutdownTimerHandler();
        }
      } else {
        if (_receivePort === null) {
          // Create a receive port and register a message handler for the timer
          // events.
          _createTimerHandler();
        }
        EventHandler._sendData(-1,
                               _receivePort,
                               _timers.firstEntry().element._wakeupTime);
  