Contains a subclass of the various writable streams that include a Symbol.asyncIterator method in order to allow for async iteration.
Also includes a wrap method which adds the iteration method to an existing stream.
Does not polyfill anything, also includes writable stream so you can use it as a drop in for stream.
const stream = require('async-iter-stream');
class MyStream extends stream.Readable {
constructor() {
super({
objectMode: true
});
this.times = 0;
}
_read() {
this.push(++this.times);
if (this.times > 10) {
this.push(null);
}
}
}
async function test() {
for await (let x of new MyStream()) {
console.log(x);
}
}
test().then(()=>console.log('done'), e=>{console.log(e)});There was tentative agreement at the most recent streams working group to include the Symbol.asyncIterator interface in node core streams when it is finalized by TC39 so feedback very welcome. The corresponding ability for write to return a promise is a while different can of worms that you are free to discuss somewhere else.