docs: function Stream( options, fcn ) {
  	var opts,
  		err,
  		map;
  
  	if ( !( this instanceof Stream ) ) {
  		if ( arguments.length > 1 ) {
  			return new Stream( options, fcn );
  		}
  		return new Stream( options );
  	}
  	opts = copy( DEFAULTS );
  	if ( arguments.length === 1 ) {
  		map = options;
  	} else {
  		map = fcn;
  		err = validate( opts, options );
  		if ( err ) {
  			throw err;
  		}
  	}
  	if ( !isFunction( map ) ) {
  		throw new TypeError( 'invalid input argument. Must provide a map function. Value: `' + map + '`.' );
  	}
  	// The stream always operates in objectMode:
  	opts.objectMode = true;
  
  	// Make the stream a Transform stream:
  	debug( 'Creating a transform stream configured with the following options: %s.', JSON.stringify( opts ) );
  	Transform.call( this, opts );
  
  	// Flag indicating if a stream has been destroyed:
  	this._destroyed = false;
  
  	// Cache the transform function:
  	this._map = map;
  
  	// Initialize a counter (index) to track the number of streamed datum (zero-based):
  	this._idx = -1;
  
  	return this;
  }