anchor.diff:    /// Like [next] except that the event is not consumed.
     /// If the next event is an error event, it stays in the queue.
     Future<T> get peek {
  -    if (!_isClosed) {
  -      var nextRequest = _PeekRequest<T>();
  -      _addRequest(nextRequest);
  -      return nextRequest.future;
  -    }
  -    throw _failClosed();
  -  }
  -
  -  /// Returns a stream of all the remaning events of the source stream.
  +    _checkNotClosed();
  +    var nextRequest = _PeekRequest<T>();
  +    _addRequest(nextRequest);
  +    return nextRequest.future;
  +  }
  +
  +  /// A stream of all the remaning events of the source stream.
     ///
     /// All requested [next], [skip] or [take] operations are completed
     /// first, and then any remaining events are provided as events of
  
positive.code:   /// Another alternative is to use `take(1)` which returns either zero or
    /// one events.
    Future<bool> get hasNext {
      if (!_isClosed) {
        var hasNextRequest = _HasNextRequest<T>();
        _addRequest(hasNextRequest);
        return hasNextRequest.future;
      }
      throw _failClosed();
    }
  
    /// Look at the next [count] data events without consuming them.
  
negative.code:   /// }
    /// ```
    StreamQueueTransaction<T> startTransaction() {
      _checkNotClosed();
  
      var request = _TransactionRequest(this);
      _addRequest(request);
  