diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index c8dbeeaddde8c0..d2739f5788a606 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -647,6 +647,8 @@ function finishMaybe(stream, state) { if (need) { prefinish(stream, state); if (state.pendingcb === 0) { + 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"); });