- From: isonmad <notifications@github.com>
- Date: Wed, 26 Oct 2016 16:39:05 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Message-ID: <whatwg/streams/pull/550/review/5968136@github.com>
isonmad commented on this pull request. Looking at your fork, as far as I can see the only two changes is that you assume `readableBackpressure === true` at stream construction time (which is not accurate when `highWaterMark > 0`), and you stop suppressing `pull()` calls unconditionally at the start of every `enqueue` call, regardless of whether enqueueing the chunk causes desiredSize to fall to zero or lower. The only technical purpose `pull()` being called fulfills is signaling that there is no backpressure anymore, isn't it? You mention 'pending reads' but I don't see what they have to do with anything you changed, can you clarify? AFAICS pending reads only occur in two cases. - if the queue is empty and `highWaterMark > 0`, in which case there is no backpressure and calling `pull` doesn't tell us anything new - the queue is empty and `highWaterMark === 0`, in which case there *is* backpressure and `pull()` calls are not being suppressed > @@ -262,12 +238,32 @@ class TransformStreamSource { transformStream._readableController = c; - return this._startPromise; + // delay the first source.pull call until there is backpressure + return this._startPromise.then(() => { Like the comment above this line says, the purpose of this `.then()` is to delay `pull()` being called. It doesn't actually *do* anything except delay the fulfillment of the promise returned by `source.start`, so putting it in the constructor would do nothing. > assert(this._writableController !== undefined); assert(this._readableController !== undefined); + const desiredSize = this._readableController.desiredSize; + TransformStreamSetBackpressure(this, desiredSize <= 0); Are there ever going to be any active reads when we're still inside the TransformStream constructor? I thought it was physically impossible for someone to have called `ts.readable.getReader().read()` at this point. And it already depends on `pull()` invocation and sets backpressure to false whenever `pull()` is called, so I'm not sure what you're suggesting here. -- 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/550#pullrequestreview-5968136
Received on Wednesday, 26 October 2016 23:39:33 UTC