fix: add more strict check for streams in `util.isStream()' #628
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 #625 - Added a similar check that the Node.js project uses.
The check used in
undici
was the reverse of the problem in the Node.js project. The commit mentioned in #625 shows they were missing the check for.on()
whereundici
was missing the checks forpipe()
or `write()'.In its current state the
util.isStream()
allowsStream
, correctly returns false onBuffer
, but does allowEventEmitter
since it also has.on()
.I changed the
util.isStream()
method to match what the Node.js project uses.In https://github.com/nodejs/undici/blob/main/lib/core/request.js#L39 I switched to using the newly exposed
util.isReadable()
since the error message there indicates that it should be a Readable stream. There are likely other places that should use the more specificutil.isReadable()
.I had to change the test
stream body without destroy
intest/stream-compat.js
that was passing anEventEmitter
as the requestbody
since that case now fails differently than the test was looking for. I believe I kept the spirit of the test intact.Hopefully, this is the direction intended for the issue.