joyent/node — pull request #6421 by joybro (2013-10-27 15:07:21+00:00)
Title: stream: End writables before emitting 'end' event

There is a timing issue b/w the internal callback for ending writable
and the user callback of 'end' event because both of them are using
the same 'end' event.

So this fails:

reader.pipe(writer);
reader.on('end', function() {
writer.end('Goodbye\n'); // should be failed
});

But this succeeds:

reader.on('end', function() {
writer.end('Goodbye\n'); // should be failed
});
reader.pipe(writer);

This commit ends writables not using 'end' event.

Fixes #5603