- From: Mattias Buelens <notifications@github.com>
- Date: Fri, 07 Sep 2018 16:41:02 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/954/review/153530681@github.com>
MattiasBuelens requested changes on this pull request. Still some holes left in `return()`. > +</emu-alg> + +<h4 id="rs-asynciterator-prototype-return" method +for="ReadableStreamAsyncIteratorPrototype">return( <var>value</var> )</h4> + +<emu-alg> + 1. If ! IsReadableStreamAsyncIterator(*this*) is *false*, throw a *TypeError* exception. + 1. Let _reader_ be *this*.[[asyncIteratorReader]]. + 1. If *this*.[[preventCancel]] is *false*, then: + 1. If _reader_.[[ownerReadableStream]] is *undefined*, return <a>a promise rejected with</a> a *TypeError* + exception. + 1. Let _result_ be ! ReadableStreamReaderGenericCancel(_reader_, _value_). + 1. Perform ! ReadableStreamReaderGenericRelease(_reader_). + 1. Return the result of <a>transforming</a> _result_ by a fulfillment handler that returns ! + ReadableStreamCreateReadResult(_value_, *true*, *true*). + 1. Perform ! ReadableStreamReaderGenericRelease(_reader_). This should reject if `reader.[[ownerReadableStream]]` is `undefined`. Otherwise, we may fail an assert in `ReadableStreamReaderGenericRelease`. We should probably just move step 3a to before step 3. > +</emu-alg> + +<h4 id="rs-asynciterator-prototype-return" method +for="ReadableStreamAsyncIteratorPrototype">return( <var>value</var> )</h4> + +<emu-alg> + 1. If ! IsReadableStreamAsyncIterator(*this*) is *false*, throw a *TypeError* exception. + 1. Let _reader_ be *this*.[[asyncIteratorReader]]. + 1. If *this*.[[preventCancel]] is *false*, then: + 1. If _reader_.[[ownerReadableStream]] is *undefined*, return <a>a promise rejected with</a> a *TypeError* + exception. + 1. Let _result_ be ! ReadableStreamReaderGenericCancel(_reader_, _value_). + 1. Perform ! ReadableStreamReaderGenericRelease(_reader_). + 1. Return the result of <a>transforming</a> _result_ by a fulfillment handler that returns ! + ReadableStreamCreateReadResult(_value_, *true*, *true*). + 1. Perform ! ReadableStreamReaderGenericRelease(_reader_). What happens when there are pending read requests? [See previous discussion.](https://github.com/whatwg/streams/pull/950#issuecomment-417393457) Normally, `ReadableStreamDefaultReader.releaseLock()` checks whether `this.[[readRequests]]` is empty. However, this implementation uses `ReadableStreamReaderGenericRelease` directly without going through the same checks as `releaseLock`. -- 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/954#pullrequestreview-153530681
Received on Friday, 7 September 2018 23:41:24 UTC