anchor.diff:        .catchError((e) {
           if (!_unsubscribed) {
             _controller.addError(e);
  -          _closeFile().then((_) { _controller.close(); });
  +          _closeFile();
             _unsubscribed = true;
           }
         });
  
positive.code: 
    // Is there a read currently in progress?
    bool _readInProgress = false;
  
    // Block read but not yet send because stream is paused.
    List<int> _currentBlock;
  
negative.code:   }
  
    Future _closeFile() {
      if (_readInProgress || _closed) {
        return _closeCompleter.future;
      }
      _closed = true;
      void done() {
        _closeCompleter.complete();
        _controller.close();
      }
      if (_openedFile != null) {
        _openedFile.close()
            .catchError(_controller.addError)
            .whenComplete(done);
        _openedFile = null;
      } else {
        done();
      }
      return _closeCompleter.future;
    }
  