docs: function Through (options, transform, flush) {
    var self = this
  
    if (!(this instanceof Through)) {
      return new Through(options, transform, flush)
    }
  
    if (typeof options === 'function') {
      flush = transform
      transform = options
      options = {}
    }
  
    options = options || {}
    Transform.call(this, options)
  
    if (typeof transform !== 'function') {
      transform = function (data) {
        this.push(data)
      }
    }
    if (typeof flush !== 'function') {
      flush = null
    }
  
    this._transform = transform
    this._flush = flush
  
    self.on('pipe', function (src) {
      if (options.passError !== false) {
        src.on('error', function (err) {
          self.emit('error', err)
        })
      }
    })
  
    if (this._transform.length < 3) {
      this._transform = wrap.transform.call(this, transform)
    }
    if (this._flush && this._flush.length < 1) {
      this._flush = wrap.flush.call(this, flush)
    }
  
    return this
  }