JakeChampion / fetch

A window.fetch JavaScript polyfill.

Home Page:http://github.github.io/fetch/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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