Fetch wrapper with built in retry
npm i --save stubborn-fetch
or
yarn add stubborn-fetch
import StubbornFetch from 'stubborn-fetch';
new StubbornFetchRequest('/some/url').send().then(
response => {
// handle standard fetch response
},
error => {
// handle standard fetch error
},
);
string;
fetchRequest
(optional) - Additional request options
Object = {
method: 'get',
};
Object = {
timingFunction: 'exponential',
maxDelay: 60000,
debug: false,
retries: 3,
minimumStatusCodeForRetry: 400,
retryOnNetworkFailure: false,
};
timingFunction
- A function of the (form retryCount : delay in ms) to determine how long to wait between retries.
string = 'exponential';
number;
totalRequestTimeLimit
(optional) - The time limit across all retries of this request, after which the request will fail.
number;
number;
number;
unretryableStatusCodes
- An array of status code numbers for which we will never retry a request, even if it's above the minimumStatusCodeForRetry
.
Array<number>;
retryOnNetworkFailure
- Whether we should retry a request when it fails due to a network issue, i.e. we did not get any response from server.
boolean;
maxErrors
(optional) - The maximum global error count we will tolerate across ALL requests. After this is hit, NO future requests will be sent.
number;
(error: StubbornFetchError) => void
shouldRetry
(optional) - Called for determining whether a retry attempt should occur. Takes precedence over other retry-related options.
(error: StubbornFetchError, retries: number) => boolean;
logger
(optional) - A class or object conforming to the Logging
interface which we'll use for logging out request information and events.
Logging = console;
MIT