anchor.diff:   * It is only used internally to give higher priority to error reporting.
    */
   void _schedulePriorityAsyncCallback(callback) {
  +  _AsyncCallbackEntry entry = new _AsyncCallbackEntry(callback);
     if (_nextCallback == null) {
  -    _scheduleAsyncCallback(callback);
  +    _nextCallback = _lastCallback = _lastPriorityCallback = entry;
  +    if (!_isInCallbackLoop) {
  +      _AsyncRun._scheduleImmediate(_asyncRunCallback);
  +    }
  +  } else if (_lastPriorityCallback == null) {
  +    entry.next = _nextCallback;
  +    _nextCallback = _lastPriorityCallback = entry;
     } else {
  -    _AsyncCallbackEntry newEntry = new _AsyncCallbackEntry(callback);
  -    newEntry.next = _nextCallback;
  -    _nextCallback = newEntry;
  +    entry.next = _lastPriorityCallback.next;
  +    _lastPriorityCallback.next = entry;
  +    _lastPriorityCallback = entry;
  +    if (entry.next == null) {
  +      _lastCallback = entry;
  +    }
     }
   }
   
  
positive.code: 
  void _asyncRunCallbackLoop() {
    while (_nextCallback != null) {
      _AsyncCallbackEntry entry = _nextCallback;
      _nextCallback = entry.next;
      if (_nextCallback == null) _lastCallback = null;
  
negative.code:   try {
      _asyncRunCallbackLoop();
    } finally {
      _lastPriorityCallback = null;
      _isInCallbackLoop = false;
      if (_nextCallback != null) _AsyncRun._scheduleImmediate(_asyncRunCallback);
    }
  