A node module that calls a callback when a readable/writable/duplex stream has completed or failed.
npm install end-of-stream
Usage
Simply pass a stream and a callback to the eos. Both legacy streams, streams2 and stream3 are supported.
var eos =require('end-of-stream');eos(readableStream,function(err) {// this will be set to the stream instanceif (err) returnconsole.log('stream had an error or closed early');console.log('stream has ended',this=== readableStream);});eos(writableStream,function(err) {if (err) returnconsole.log('stream had an error or closed early');console.log('stream has finished',this=== writableStream);});eos(duplexStream,function(err) {if (err) returnconsole.log('stream had an error or closed early');console.log('stream has ended and finished',this=== duplexStream);});eos(duplexStream, {readable:false},function(err) {if (err) returnconsole.log('stream had an error or closed early');console.log('stream has finished but might still be readable');});eos(duplexStream, {writable:false},function(err) {if (err) returnconsole.log('stream had an error or closed early');console.log('stream has ended but might still be writable');});eos(readableStream, {error:false},function(err) {// do not treat emit('error', err) as a end-of-stream});