Harness status: OK Found 65 tests 65 Pass Pass Aborting a WritableStream before it starts should cause the writer's unsettled ready promise to reject Pass Aborting a WritableStream should cause the writer's fulfilled ready promise to reset to a rejected one Pass abort() on a released writer rejects Pass Aborting a WritableStream immediately prevents future writes Pass Aborting a WritableStream prevents further writes after any that are in progress Pass Fulfillment value of writer.abort() call must be undefined even if the underlying sink returns a non-undefined value Pass WritableStream if sink's abort throws, the promise returned by writer.abort() rejects Pass WritableStream if sink's abort throws, the promise returned by multiple writer.abort()s is the same and rejects Pass WritableStream if sink's abort throws, the promise returned by ws.abort() rejects Pass WritableStream if sink's abort throws, for an abort performed during a write, the promise returned by ws.abort() rejects Pass Aborting a WritableStream passes through the given reason Pass Aborting a WritableStream puts it in an errored state with the error passed to abort() Pass Aborting a WritableStream causes any outstanding write() promises to be rejected with the reason supplied Pass Closing but then immediately aborting a WritableStream causes the stream to error Pass Closing a WritableStream and aborting it while it closes causes the stream to ignore the abort attempt Pass Aborting a WritableStream after it is closed is a no-op Pass WritableStream should NOT call underlying sink's close if no abort is supplied (historical) Pass returning a thenable from abort() should work Pass .closed should not resolve before fulfilled write() Pass .closed should not resolve before rejected write(); write() error should not overwrite abort() error Pass writes should be satisfied in order when aborting Pass writes should be satisfied in order after rejected write when aborting Pass close() should reject with abort reason why abort() is first error Pass underlying abort() should not be called until underlying write() completes Pass underlying abort() should not be called if underlying close() has started Pass if underlying close() has started and then rejects, the abort() and close() promises should reject with the underlying close rejection reason Pass an abort() that happens during a write() should trigger the underlying abort() even with a close() queued Pass if a writer is created for a stream with a pending abort, its ready should be rejected with the abort error Pass writer close() promise should resolve before abort() promise Pass writer.ready should reject on controller error without waiting for underlying write Pass writer.abort() while there is an in-flight write, and then finish the write with rejection Pass writer.abort(), controller.error() while there is an in-flight write, and then finish the write Pass writer.abort(), controller.error() while there is an in-flight close, and then finish the close Pass controller.error(), writer.abort() while there is an in-flight write, and then finish the write Pass controller.error(), writer.abort() while there is an in-flight close, and then finish the close Pass releaseLock() while aborting should reject the original closed promise Pass releaseLock() during delayed async abort() should reject the writer.closed promise Pass sink abort() should not be called until sink start() is done Pass if start attempts to error the controller after abort() has been called, then it should lose Pass stream abort() promise should still resolve if sink start() rejects Pass writer abort() during sink start() should replace the writer.ready promise synchronously Pass promises returned from other writer methods should be rejected when writer abort() happens during sink start() Pass abort() should succeed despite rejection from write Pass abort() should be rejected with the rejection returned from close() Pass a rejecting sink.write() should not prevent sink.abort() from being called Pass when start errors after stream abort(), underlying sink abort() should be called anyway Pass when calling abort() twice on the same stream, both should give the same promise that fulfills with undefined Pass when calling abort() twice on the same stream, but sequentially so so there's no pending abort the second time, both should fulfill with undefined Pass calling abort() on an errored stream should fulfill with undefined Pass sink abort() should not be called if stream was erroring due to controller.error() before abort() was called Pass sink abort() should not be called if stream was erroring due to bad strategy before abort() was called Pass abort with no arguments should set the stored error to undefined Pass abort with an undefined argument should set the stored error to undefined Pass abort with a string argument should set the stored error to that argument Pass abort on a locked stream should reject Pass WritableStreamDefaultController.signal Pass the abort signal is signalled synchronously - write Pass the abort signal is signalled synchronously - close Pass the abort signal is not signalled on error Pass the abort signal is not signalled on write failure Pass the abort signal is not signalled on close failure Pass recursive abort() call from abort() aborting signal (not started) Pass recursive abort() call from abort() aborting signal Pass recursive close() call from abort() aborting signal (not started) Pass recursive close() call from abort() aborting signal