- From: Adam Rice <notifications@github.com>
- Date: Tue, 31 Oct 2017 07:03:52 +0000 (UTC)
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Tuesday, 31 October 2017 07:04:20 UTC
ricea commented on this pull request.
> +</code></pre>
+
+The error handling here is subtle because cancelling the concatenated stream has to cancel all the intput
+streams. However, the success case is simple enough. We just pipe each stream in the <code>readables</code> array one at
+a time to the transform stream's <a>writable side</a>, and then close it when we are done. The <a>readable side</a> is
+then a concatenation of all the chunks from all of of the streams. We return it from the function. Backpressure is
+applied as usual.
+
+It's sometimes natural to treat a promise for a readable as if it were a readable. A simple adaptor function is all
+that's needed:
+
+<pre><code class="lang-javascript">
+function promiseToReadable(promiseForReadable) {
+ const ts = new TransformStream();
+ promiseForReadable.then(readable => readable.pipeTo(ts.writable))
+ .catch(reason => ts.writable.abort(reason))
It can fail if `readable` doesn't implement pipeTo(), or if pipeTo() is implemented but throws, or readable is locked... probably some more cases too.
--
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/847#discussion_r147908327
Received on Tuesday, 31 October 2017 07:04:20 UTC