docs: function StreamMerge(options) {
    var _self = this;
  
    options = options || {};
  
    // Ensure new were used
    if (!(this instanceof StreamMerge)) {
      return new (StreamMerge.bind.apply(StreamMerge,
        [StreamMerge].concat([].slice.call(arguments, 0))));
    }
  
    // Parent constructor
    Stream.PassThrough.call(this,
      isStream(options)  || 'function' === typeof options
        ? undefined
        : options
    );
  
    // Private props
    this._mergeState = {
      _streams: [],
      _ending: false,
      _ended: false
    };
  
    // Creating the queue
    this._queue = new StreamQueue(
      isStream(options)  || 'function' === typeof options
        ? undefined
        : options
    );
  
    // Pipe the queue in
    _self._queue.pipe(_self);
    
  
    // Reemit errors
    this._queue.on('error', function queueErrorHandler(err) {
      _self.emit('error', err);
    });
  
    // Add given streams and ends
    if(arguments.length > 1 || isStream(options)
      || 'function' === typeof options) {
      this.done.apply(this,
        [].slice.call(
          arguments, isStream(options) ||
            'function' === typeof options ? 0 : 1
        )
      );
    }
  
  }