A fetch with Response abilities.
npm install @webreflection/fetchSocial Media Photo by Anthony Duran on Unsplash
 
A fetch with Response abilities.
(... see what I did there?)
``js
import fetch from '@webreflection/fetch';
// await directly Response methods or accessors
console.log(await fetch('https://google.com').text());
console.log(await fetch('https://google.com').ok);
// all other Promise methods just work
console.log(await fetch('https://google.com').then(r => r.ok));
`
The export is simply a Proxy that forwards to the Response any explicit intent, meaning:
* a fetch(url, ...init) returns exactly a fetch(url, ...init) referencefetch
* you can do everything you could do already with ... this is fetch indeed!Response.prototype
* you can use this module as drop-in replacement in your current code though
you can eventually incrementally use its features if and/or when* needed
if any known key is directly accessed, such property or method is forwarded directly to the response once the fetch* is resolvedResponse.prototype
as the goal is to shortcut the response boilerplate, keys prevail over Promise.prototype so if your argument is that Symbol.toStringTag returned the response one, I am afraid that's meant by design so that unless Promise API introduces a conflicting entry name with Response* API, this module actually requires zero maintainability and it's future-friendly with API changes and whatnotstatus
* if you want to deal with or ok or headers you still can do that:const req = fetch(url, ...init)
* reference try/catch
* use around req.json() or req.text() or any other forwarded methodconst { status, headers } = await req
* use or const status = await req.status or any other way you like to introspect the failure
`js``
// alternatively ...
const { ok, text } = await fetch(URL);
if (ok) console.log(await text());
If none of this is interesting to you though, we're good! You can move on happily ever after 👋