From f0d2df41f8716670435b284e987b2fcc23221947 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Sat, 18 Jan 2020 14:56:59 +0100 Subject: [PATCH] fs: change streams to always emit close by default Previously due to compat reasons 'close' was only emitted if no 'error'. This removes the compat behavior in order to properly follow expected streams behavior. PR-URL: https://github.com/nodejs/node/pull/31408 Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott --- lib/internal/fs/streams.js | 14 +------------- test/parallel/test-fs-stream-destroy-emit-error.js | 4 ++-- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/lib/internal/fs/streams.js b/lib/internal/fs/streams.js index 561216c353c605..c121273861da79 100644 --- a/lib/internal/fs/streams.js +++ b/lib/internal/fs/streams.js @@ -73,10 +73,6 @@ function ReadStream(path, options) { if (options.highWaterMark === undefined) options.highWaterMark = 64 * 1024; - // For backwards compat do not emit close on destroy. - if (options.emitClose === undefined) { - options.emitClose = false; - } if (options.autoDestroy === undefined) { options.autoDestroy = false; } @@ -269,12 +265,8 @@ ReadStream.prototype._destroy = function(err, cb) { function closeFsStream(stream, cb, err) { stream[kFs].close(stream.fd, (er) => { - er = er || err; - cb(er); stream.closed = true; - const s = stream._writableState || stream._readableState; - if (!er && !s.emitClose) - stream.emit('close'); + cb(er || err); }); stream.fd = null; @@ -298,10 +290,6 @@ function WriteStream(path, options) { // Only buffers are supported. options.decodeStrings = true; - // For backwards compat do not emit close on destroy. - if (options.emitClose === undefined) { - options.emitClose = false; - } if (options.autoDestroy === undefined) { options.autoDestroy = false; } diff --git a/test/parallel/test-fs-stream-destroy-emit-error.js b/test/parallel/test-fs-stream-destroy-emit-error.js index c1db9547a8a158..347fbfd97fa0c4 100644 --- a/test/parallel/test-fs-stream-destroy-emit-error.js +++ b/test/parallel/test-fs-stream-destroy-emit-error.js @@ -8,13 +8,13 @@ tmpdir.refresh(); { const stream = fs.createReadStream(__filename); - stream.on('close', common.mustNotCall()); + stream.on('close', common.mustCall()); test(stream); } { const stream = fs.createWriteStream(`${tmpdir.path}/dummy`); - stream.on('close', common.mustNotCall()); + stream.on('close', common.mustCall()); test(stream); }