varduplexer=require('duplexer')module.exports=function(){varstreams=[].slice.call(arguments),first=streams[0],last=streams[streams.length-1],thepipe=duplexer(first,last)if(streams.length==1)returnstreams[0]elseif(!streams.length)thrownewError('connect called with empty args')//pipe all the streams togetherfunctionrecurse(streams){if(streams.length<2)returnstreams[0].pipe(streams[1])recurse(streams.slice(1))}recurse(streams)functiononerror(){varargs=[].slice.call(arguments)args.unshift('error')thepipe.emit.apply(thepipe,args)}//es.duplex already reemits the error from the first and last stream.//add a listener for the inner streams in the pipeline.for(vari=1;i<streams.length-1;i++)streams[i].on('error',onerror)returnthepipe}