When initializing a response it should throw if status is not in the range 200 to 599
tkrotoff opened this issue · comments
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