1.1.0 • Published 10 months ago
@netly/node-fetch v1.1.0
node-fetch with native fetch + retry + timeout
Inspired by node-fetch-retry-timeout.
Tiny replacement for native fetch with additional benefits.
Installation
npm i @netly/node-fetch
Parameters
Same as in native fetch, but with small extension. Everything is optional.
parameter | type | description | default |
---|---|---|---|
retry | number | number of times to retry the request | 3 |
timeout | number | number of ms to wait before request cancel | 20_000 |
retryStrategy | Function | exponential backoff strategy | (times) => Math.min((2 ** times - 1) * 1000, 20000) |
retryOnHttpResponse | Function | can retry based on http response statuses | (response) => response.status >= 500; |
retry
retry?: number
timeout
timeout?: number
retryStrategy
Calculates how long to wait before next retry. times
- the number of retry.
To disable retry strategy: () => 0
retryStrategy: (times: number): number => Math.min((2 ** times - 1) * 1000, 20000);
retryOnHttpResponse
Check if response is desired. If no - throw error and send request one more time.
retryOnHttpResponse: (response: globalThis.Response) => response.status >= 500;
Example
For cjs
const { default: fetch } = require('@netly/node-fetch');
// or
const { fetch } = require('@netly/node-fetch');
const response = await fetch('https://www.google.com');
For esm
import { fetch } from '@netly/node-fetch';
// or
import fetch from '@netly/node-fetch';
const response = await fetch('https://www.google.com');
For ts
import { fetch } from '@netly/node-fetch';
// or
import fetch from '@netly/node-fetch';
const response = await fetch('https://www.google.com');