diff --git a/lib/index.js b/lib/index.js index 6b22af7..7e2c384 100644 --- a/lib/index.js +++ b/lib/index.js @@ -342,6 +342,23 @@ const Channel = function(length = 0) { ); }; +// Node.js stream.readable +const fromNodeStream = (channel, stream) => { + stream.on(`readable`, async () => { + for (;;) { + const data = stream.read(); + + if (data === null) { + break; + } else { + await channel.push(data); + } + } + }); + + stream.once(`end`, channel.close); +}; + Channel.from = (values, mapfn, thisArg) => { const channel = Channel(); @@ -367,20 +384,7 @@ Channel.from = (values, mapfn, thisArg) => { } } } catch (exception) { - // Node.js stream.readable - values.on(`readable`, async () => { - while (true) { - const data = values.read(); - - if (data === null) { - break; - } else { - await channel.push(data); - } - } - }); - - values.once(`end`, channel.close); + fromNodeStream(channel, values); } } })();