- From: Chris Zuber <notifications@github.com>
- Date: Sun, 02 Jul 2023 19:04:35 -0700
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/issues/1679/1617111868@github.com>
I think that what I have in mind is better suited for its own issue upon thinking about it, but I do want to push back a little against some assumptions being made here: - there are other reasons for `fetch()` to error (CORS, CSP `{redirect:'error'}`, an aborted signal, so it's not a given that `fetch()` is taking place outside of a `try` - `fetch().then().catch()` should still be taken into consideration - Not all responses will be JSON - it may be that an internal server error is HTML when the expected response is JSON (`resp.json()` would just throw a not-so-useful JSON parsing error there) What I have in mind here would better fall under "Fetch Assertions". For the sake of addressing the issue at hand here, that'd be: ```js try { const resp = await fetch(url, { headers: { Accept: 'application/json' }, assert: { ok: true, acceptable: true }, redirect: 'error', mode: 'cors', integrity: '... ', signal: AbortSignal.timeout(3000), /* ...*/ }); // Handle response knowing it's `ok` and JSON per the Accept/Content-Type headers } catch (err) { // Handle error } ``` I think that's the more versatile and useful approach. This would leave open any number of error conditions a dev could specify based on request and response headers. And with an additional option could close the connection early (maybe based on Content-Type or Content-Length). I still think that the actual response body and headers will be highly relevant to many errors thrown, but let's treat that as a separate issue for now. My proposal is adding fetch assertions, with status/statusRange/ok being among the options. If assertions are not met by the response headers/status, throw an error (whether or not that is a new type of error with response headers and body is a different question). -- Reply to this email directly or view it on GitHub: https://github.com/whatwg/fetch/issues/1679#issuecomment-1617111868 You are receiving this because you are subscribed to this thread. Message ID: <whatwg/fetch/issues/1679/1617111868@github.com>
Received on Monday, 3 July 2023 02:04:40 UTC