code: function BlockDecoder(opts) {
    opts = opts || {};
  
    var noDecode = !!opts.noDecode;
    stream.Duplex.call(this, {
      allowHalfOpen: true, // For async decompressors.
      readableObjectMode: !noDecode
    });
  
    this._type = null;
    this._codecs = opts.codecs;
    this._parseHook = opts.parseHook;
    this._tap = new Tap(new Buffer(0));
    this._blockTap = new Tap(new Buffer(0));
    this._syncMarker = null;
    this._readValue = null;
    this._noDecode = noDecode;
    this._queue = new utils.OrderedQueue();
    this._decompress = null; // Decompression function.
    this._index = 0; // Next block index.
    this._needPush = false;
    this._finished = false;
  
    this.on('finish', function () {
      this._finished = true;
      if (this._needPush) {
        this._read();
      }
    });
  }
docs: Duplex stream for decoding object container files.