- From: Takeshi Yoshino <notifications@github.com>
- Date: Fri, 20 Jan 2017 07:31:27 -0800
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/655/review/17696795@github.com>
tyoshino commented on this pull request. > + }).then(() => { + assert_array_equals(events, [], 'writePromise, abortPromise and writer.closed must be not rejected yet'); + + rejectWrite(error2); + + return Promise.all([ + promise_rejects(t, error2, writePromise, + 'writePromise must reject with the error returned from the sink\'s write method'), + promise_rejects(t, error2, abortPromise, + 'abortPromise must reject with the error returned from the sink\'s write method'), + promise_rejects(t, error2, writer.closed, + 'writer.closed must reject with the error returned from the sink\'s write method'), + flushAsyncEvents() + ]); + }).then(() => { + const writePromise3 = writer.write('a'); Yeah, added. > + events, [], + 'writePromise, abortPromise and writer.closed must be not fulfilled/rejected yet even after ' + + 'controller.error() call'); + + resolveWrite(); + + return Promise.all([ + writePromise, + promise_rejects(t, error2, abortPromise, + 'abortPromise must reject with the error passed to the controller\'s error method'), + promise_rejects(t, error2, writer.closed, + 'writer.closed must reject with the error passed to the controller\'s error method'), + flushAsyncEvents() + ]); + }).then(() => { + const writePromise4 = writer.write('a'); Done > + }); + + abortPromise = writer.abort(error1); + abortPromise.catch(() => { + events.push('abortPromise'); + }); + + const writePromise2 = writer.write('a'); + + return Promise.all([ + promise_rejects(t, new TypeError(), writePromise2, 'writePromise2 must reject with an error indicating abort'), + promise_rejects(t, new TypeError(), writer.ready, 'writer.ready must reject with an error indicating abort'), + flushAsyncEvents() + ]); + }).then(() => { + assert_array_equals(events, [], 'writePromise, abortPromise and writer.closed must be not fulfilled/rejected yet'); Done > + + controller.error(error2); + + const writePromise2 = writer.write('a'); + + return Promise.all([ + promise_rejects(t, new TypeError(), writePromise2, + 'writePromise2 must reject with an error indicating the stream has already been errored'), + promise_rejects(t, error2, writer.ready, + 'writer.ready must reject with the error passed to the controller\'s error method'), + flushAsyncEvents() + ]); + }).then(() => { + assert_array_equals(events, [], 'writePromise and writer.closed must be rejected yet'); + + abortPromise = writer.abort(error1); Thanks for finding this. Yes, it's important. Actually, in this test case, abort() fails immediately since it checks the state. > + events.push('writePromise'); + }); + + controller.error(error2); + + const writePromise2 = writer.write('a'); + + return Promise.all([ + promise_rejects(t, new TypeError(), writePromise2, + 'writePromise2 must reject with an error indicating the stream has already been errored'), + promise_rejects(t, error2, writer.ready, + 'writer.ready must reject with the error passed to the controller\'s error method'), + flushAsyncEvents() + ]); + }).then(() => { + assert_array_equals(events, [], 'writePromise and writer.closed must be rejected yet'); Fixed. Also changed the phrase to "fulfilled/rejected". writePromise will fulfill in this test case. > @@ -213,4 +219,96 @@ promise_test(() => { }); }, 'the promise returned by async abort during close should resolve'); +// Though the order of the promises is not important, we're checking it for interoperability. We can change the order Thanks. Updated. > @@ -109,6 +109,25 @@ function IsWritableStreamLocked(stream) { return true; } +function WritableStreamEnsureReadyPromiseRejectedWith(stream, error, isPending) { Good catch. Fixed. -- 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/655
Received on Friday, 20 January 2017 15:32:05 UTC