anchor.diff:      },
       onDone: () {
         // User is piping in a new stream
  -      if (stream == lasStream && throwOnError) {
  +      if (stream == lastStream && _throwOnError) {
           _closed(new UnderflowError());
         }
         streamDone.complete();
  
positive.code:    * the buffer will hold before pausing the underlying stream. A limit of 0
     * means no buffer limits.
     */
    StreamBuffer({this.throwOnError: false});
  
    /**
   * The amount of unread data buffered.
   */
    int get buffered => _counter;
  
    List<T> _consume(int size) {
      // Check if we can short-circuit the the process with one list.
      var follower = 0;
      var ret = new List(size);
      while (size > 0) {
        var chunk = _chunks.first;
        var listCap = (chunk is List)  ? chunk.length - _offset : 1;
        var subsize = size > listCap ? listCap : size;
        if (chunk is List) {
          ret.setRange(follower, follower + subsize,
              chunk.getRange(_offset, _offset + subsize));
  
negative.code: class UnderflowError extends Error {
    final message;
  
    /// The [message] describes the underflow.
    UnderflowError([this.message]);
  
    String toString() {
  