- From: Takeshi Yoshino <notifications@github.com>
- Date: Wed, 01 Jul 2015 02:47:24 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Message-ID: <whatwg/streams/pull/361/r33663492@github.com>
> + controller._insideUnderlyingByteSource = false; > +} > + > +function CallPullOrPullIntoLaterIfNeeded(controller) { > + if (controller._insideUnderlyingByteSource) { > + controller._callPullOrPullIntoLaterIfNeeded = true; > + return; > + } > + > + Promise.resolve().then(CallPullOrPullIntoRepeatedlyIfNeeded.bind(undefined, controller)); > +} > + > +function CallPullOrPullIntoRepeatedlyIfNeeded(controller) { > + const stream = controller._controlledReadableByteStream; > + > + while (true) { respond() and enqueue() calls ReadableByteStreamControllerCallPullOrPullIntoLaterIfNeeded() to call pull/pullInto in the next tick if needed. In the cases where pull/pullInto doesn't fulfill all the pending requests, we invoke it again. This allows implementing a pull/pullInto that calls respond()/enqueue() for each pull/pullInto. They'll be called repeatedly and synchronously by this while loop. I found a bug in ReadableByteStreamControllerCallPullOrPullIntoLaterIfNeeded. Fixed and added tests by bf35ce30e4b1824b684617ad6605748454b66d0a --- Reply to this email directly or view it on GitHub: https://github.com/whatwg/streams/pull/361/files#r33663492
Received on Wednesday, 1 July 2015 09:47:54 UTC