eos and stream type detection
Looking at https://github.com/nodejs/node/blob/master/lib/internal/streams/end-of-stream.js#L31
It looks like "eos" uses the writable
and readable
properties to detect whether a stream is Readable
like or Writable
like. However, according my current incomplete understanding of these properties (https://github.com/nodejs/node/issues/29377), they cannot/should not be used for this purpose, i.e. a Readable
stream could in theory have a readable = false
which later becomes a readable = true
.
Should we maybe change these lines to something like e.g:
const isReadable = (
typeof stream.readable === 'boolean' ||
stream._readableState ||
typeof stream.readableEnded === 'boolean'
);
let readable = opts.readable || (opts.readable !== false && isReadable);