Re: [whatwg/streams] add @@asyncIterator to ReadableStreamDefaultReader (#950)

a bit out of track but I where just thinking, what if `Response` and `Request` where able to accept a `@@asyncIterator` and a `@@iterator`?

Node.js and the the browser have different streaming api's but what they both will have in common is the `@@asyncIterator` that yields a `Uint8array` chunks. 

Node's streaming api can be exported to browsers.
And whatwg-streams can be polyfilled in Node.

But having to handle both in a uniformed way is tough and requires a large overhead and a dependency of the one or the other. A iterator can easily be created with neither of them and works in both the browser and Node.js 

```js
// if using Node:
// const { Request, Response } = require('node-fetch')

async function iterator() {
  yield Uint8Array.from([97, 98, 99])
}

await new Response(iterator()).text() // abc
await new Request(iterator()).text() // abc

// With either Node-stream or whatwg-stream you would be able to do:
await new Response(stream).text()
await new Request(stream).text()
// ...since it would be able to detect the `Symbol.asyncIterator`

```

There are already many modules out there that already uses node streaming api but none of them can be used by `window.fetch` together with Node's stream api unless they are converted to a `Blob` or a whatwg stream first

Taking jsZip, WebTorrent and socket.io-stream as an example, they all utilize Nodes streaming api. But the fetch api can't handle them cuz it's a different streaming api (unless you are using node-fetch which is the complete opposite since they can't handle whatwg-streams)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/950#issuecomment-421373573

Received on Friday, 14 September 2018 14:20:47 UTC