node-fetch/node-fetch
When initializing a response it should throw if status is not in the range 200 to 599
Aberta
#1.685 aberto em 1 de dez. de 2022
buggood first issuehelp wanted
Métricas do repositório
- Stars
- (8.563 estrelas)
- Métricas de merge de PR
- (Nenhuma PRs mesclada em 30d)
Description
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 |
|---|---|
| node-fetch | 3.3.0 |
| node | 18.12.1 |
| npm | 8.19.2 |
| Operating System | macOS Monterey |