Node really doesn't pay attention to nice API design. If all readable streams had

`Stream.toBufferAsync(): Promise`

`Stream.toStringAsync(): Promise`

`Stream.toArrayAsync():Promise`

then you could quickly collect any stream you want into a promise, including the stream returned by request.

Here is how you do a Stream API properly.

https://api.dartlang.org/stable/2.2.0/dart-async/Stream-clas...

Has first, last, toList(), map, reduce, filter, takeWhile, skipWhile, Stream.periodic and other great goodies that make stream usage nice and easy.

Too bad Google never invested this amazing API designer power into JS, they could've been the "apache commons" of node.

We're getting there. I made both node and web streams into async iterables, and have now proposed this for js standardisation: https://github.com/tc39/proposal-iterator-helpers