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:       follower += subsize;
        _offset += subsize;
        _counter -= subsize;
        size -= subsize;
        if (chunk is! List || _offset >= chunk.length) {
          _offset = 0;
          _chunks.removeAt(0);
  
negative.code:  */
  class StreamBuffer<T> implements StreamConsumer {
  
    List _chunks = [];
    int _offset = 0;
    int _counter = 0; // sum(_chunks[*].length) - _offset
    List<_ReaderInWaiting<List<T>>> _readers = [];
    StreamSubscription<T> _sub;
    Completer _streamDone;
  
    final bool _throwOnError;
  
    Stream _currentStream;
  
    int _limit = 0;
  
  