This is a testharness.js-based test.
PASS Aborting rejects with AbortError
PASS Aborting rejects with AbortError - no-cors
PASS TypeError from request constructor takes priority - RequestInit's window is not null
PASS TypeError from request constructor takes priority - Input URL is not valid
PASS TypeError from request constructor takes priority - Input URL has credentials
PASS TypeError from request constructor takes priority - RequestInit's mode is navigate
PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid
PASS TypeError from request constructor takes priority - RequestInit's method is invalid
PASS TypeError from request constructor takes priority - RequestInit's method is forbidden
PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple
PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin
PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors
PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors
PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value
PASS TypeError from request constructor takes priority - Bad mode init parameter value
PASS TypeError from request constructor takes priority - Bad credentials init parameter value
PASS TypeError from request constructor takes priority - Bad cache init parameter value
PASS TypeError from request constructor takes priority - Bad redirect init parameter value
PASS Request objects have a signal property
PASS Signal on request object
PASS Signal on request object created from request object
PASS Signal on request object created from request object, with signal on second request
PASS Signal on request object created from request object, with signal on second request overriding another
PASS Signal retained after unrelated properties are overridden by fetch
PASS Signal removed by setting to null
PASS Already aborted signal rejects immediately
PASS Request is still 'used' if signal is aborted before fetching
PASS response.arrayBuffer() rejects if already aborted
PASS response.blob() rejects if already aborted
PASS response.formData() rejects if already aborted
PASS response.json() rejects if already aborted
PASS response.text() rejects if already aborted
PASS Already aborted signal does not make request
PASS Already aborted signal can be used for many fetches
PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting
PASS Underlying connection is closed when aborting after receiving response
PASS Underlying connection is closed when aborting after receiving response - no-cors
FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_throws: function "function() { throw e }" threw object "TypeError: Failed to fetch" that is not a DOMException AbortError: property "code" is equal to undefined, expected 20
FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_throws: function "function() { throw e }" threw object "TypeError: Failed to fetch" that is not a DOMException AbortError: property "code" is equal to undefined, expected 20
FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_throws: function "function() { throw e }" threw object "TypeError: Failed to fetch" that is not a DOMException AbortError: property "code" is equal to undefined, expected 20
FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_throws: function "function() { throw e }" threw object "TypeError: Failed to fetch" that is not a DOMException AbortError: property "code" is equal to undefined, expected 20
FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_throws: function "function() { throw e }" threw object "TypeError: Failed to fetch" that is not a DOMException AbortError: property "code" is equal to undefined, expected 20
PASS Stream errors once aborted. Underlying connection closed.
PASS Stream errors once aborted, after reading. Underlying connection closed.
PASS Stream will not error if body is empty. It's closed with an empty queue before it errors.
FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false
PASS Signal state is cloned
PASS Clone aborts with original controller
Harness: the test ran to completion.

