Emit end
event on streams when process fails
#518
Merged
+8
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #517
When a process (or one of its standard streams) errors, we return what could have been buffered so far from stdout/stderr as
error.stdout
anderror.stderr
(which are also appended toerror.message
). To do this, we firstdestroy()
those streams, then retrieve the buffered value fromget-stream
.However, calling
destroy()
prevents theend
event from being emitted on those streams. This behavior differs from howchild_process.spawn()
and might be unexpected.This PR fixes this for the case where the
buffer
option isfalse
. When that's the case, there is no need to destroy the streams since we do not need to do anything with them anymore. We can just let Node.js destroy them naturally as part of the child process exit.