From the spec https://fetch.spec.whatwg.org/#response-class
To initialize a response, given a Response object response, ResponseInit init, and an optional body with type body, run these steps:
1. If init["status"] is not in the range 200 to 599, inclusive, then throw a RangeError.
2. If init["statusText"] does not match the reason-phrase token production, then throw a TypeError.
[...]
6. If body was given, then:
1. If response’s status is a null body status, then throw a TypeError.
[...]
Reproduction
new Response('body', { status: 204 }); // KO Not throwing
new Response(undefined, { status: 204 }); // Not throwing is correct here
new Response(undefined, { status: 0 }); // KO Not throwing
Expected behavior
Under Chrome 107:
new Response('body', { status: 204 });
// TypeError: Failed to construct 'Response': Response with null body status cannot have body
new Response(undefined, { status: 204 });
// No throwing
new Response(undefined, { status: 0 });
// RangeError: Failed to construct 'Response': The status provided (0) is outside the range [200, 599].
Your Environment
| software |
version |
| whatwg-fetch |
3.6.2 |
| node |
18.12.1 |
| npm |
8.19.2 |
| Operating System |
macOS Monterey |
Related issue: node-fetch/node-fetch#1685
From the spec https://fetch.spec.whatwg.org/#response-class
Reproduction
Expected behavior
Under Chrome 107:
Your Environment
Related issue: node-fetch/node-fetch#1685