Skip to content

Commit

Permalink
Forward-port of nodejs#13850
Browse files Browse the repository at this point in the history
  • Loading branch information
mcollina committed Jun 21, 2017
1 parent 46770ab commit 03aaa3b
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions lib/_stream_writable.js
Original file line number Diff line number Diff line change
Expand Up @@ -408,15 +408,26 @@ function doWrite(stream, state, writev, len, chunk, encoding, cb) {

function onwriteError(stream, state, sync, er, cb) {
--state.pendingcb;
if (sync) processNextTick(afterError, stream, state, cb, er);else afterError(stream, state, cb, er);

stream._writableState.errorEmitted = true;
stream.emit('error', er);
}

function afterError(stream, state, cb, err) {
cb(err);
finishMaybe(stream, state);
if (sync) {
// defer the callback if we are being called synchronously
// to avoid piling up things on the stack
process.nextTick(cb, er);
// this can emit finish, and it will always happen
// after error
process.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
} else {
// the caller expect this to happen before if
// it is async
cb(er);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
// this can emit finish, but finish must
// always follow error
finishMaybe(stream, state);
}
}

function onwriteStateUpdate(state) {
Expand Down Expand Up @@ -649,4 +660,4 @@ Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function (err, cb) {
this.end();
cb(err);
};
};

0 comments on commit 03aaa3b

Please sign in to comment.