This is Balena's implementation of fetch
, but others could find it useful too.
Features:
- happy eyeballs
- Attempt connections to all addresses provided
getaddrinfo
, not just the first one - Attempt connection to both IPv6 and IPv4 concurrently for dual-stack hosts
- Remember last successful connection type and try that first for next request
- Attempt connections to all addresses provided
- browser/node safe
- ...more to come
This is meant to replace all naked calls to http.request
, fetch
, node-fetch
, @balena/request
, etc.
npm i --save @balena/fetch
import fetch from '@balena/fetch';
const resp = await fetch('https://api.balena-cloud.com/ping');
console.log(await resp.text()) // <= OK