anchor.diff:    Stream<T> asStream() => new Stream.fromFuture(this);
   
     void _setValue(T value) {
  -    if (_state != _INCOMPLETE) throw new StateError("Future already completed");
  +    if (_isComplete) throw new StateError("Future already completed");
       _FutureListener listeners = _removeListeners();
       _state = _VALUE;
       _resultOrListeners = value;
  
positive.code:         return;
        }
      } on AsyncError catch (e) {
        _setError(e);
        return;
      } catch (e, s) {
        error = new AsyncError.withCause(e, s, error);
      }
  
negative.code:     return thenFuture;
    }
  
    /** Handle a late listener on a completed future with an error. */
    Future _handleError(onError(AsyncError error), bool test(error)) {
      assert(_hasError);
      _clearUnhandledError();
      AsyncError error = _resultOrListeners;
      _CatchErrorFuture errorFuture = new _CatchErrorFuture(onError, test);
      new Timer(0, (_) { errorFuture._sendError(error); });
  