diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index 805cbd0db020c0..3e0a005c520a3c 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -666,6 +666,9 @@ function finishMaybe(stream, state, sync) { function finish(stream, state) { state.pendingcb--; + if (state.errorEmitted) + return; + state.finished = true; stream.emit('finish'); diff --git a/test/parallel/test-stream-writable-write-writev-finish.js b/test/parallel/test-stream-writable-write-writev-finish.js index aa43b1490c8600..9fce315f8b2e1a 100644 --- a/test/parallel/test-stream-writable-write-writev-finish.js +++ b/test/parallel/test-stream-writable-write-writev-finish.js @@ -132,6 +132,7 @@ const stream = require('stream'); process.nextTick(cb); }; w.on('error', common.mustCall()); + w.on('finish', common.mustNotCall()); w.on('prefinish', () => { w.write("shouldn't write in prefinish listener"); });