diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index 22aee3236c4ea7..2343704b0cdf85 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -45,6 +45,7 @@ const { getHighWaterMark, getDefaultHighWaterMark } = require('internal/streams/state'); +const assert = require('internal/assert'); const { ERR_INVALID_ARG_TYPE, ERR_METHOD_NOT_IMPLEMENTED, @@ -826,9 +827,16 @@ ObjectDefineProperties(Writable.prototype, { const destroy = destroyImpl.destroy; Writable.prototype.destroy = function(err, cb) { const state = this._writableState; - if (!state.destroyed) { + + // Invoke pending callbacks. + if ( + state.bufferedIndex < state.buffered.length || + state[kOnFinished].length + ) { + assert(!state.destroyed); process.nextTick(errorBuffer, state); } + destroy.call(this, err, cb); return this; };