anchor.diff:    void _asyncCompleteError(error, StackTrace stackTrace) {
       assert(!_isComplete);
   
  -    _markPendingCompletion();
  +    _setPendingComplete();
       _zone.scheduleMicrotask(() {
         _completeError(error, stackTrace);
       });
  
positive.code:       return;
      } else {
        T typedValue = value;
      }
  
      _markPendingCompletion();
      _zone.scheduleMicrotask(() {
        _completeWithValue(value);
      });
  
negative.code:           _Future result = listener.result;
            if (chainSource is _Future) {
              if (chainSource._isComplete) {
                listeners = result._removeListeners();
                result._cloneResult(chainSource);
                source = chainSource;
                continue;
              } else {
                _chainCoreFuture(chainSource, result);
  