promise-fn-retry
v1.0.11
Published
A simple retry to be used in integrations with NodeJS
Downloads
7,705
Maintainers
Readme
Promise Retry
Abstraction for exponential and custom retry strategies to failed promises.
Retrying made simple and easy. \o/
Installation
Using yarn:
yarn add promise-fn-retry
Using npm:
npm i --save promise-fn-retry
Usage
Simple Request
import fetch from 'node-fetch';
import retry from 'promise-fn-retry';
const requestUser = () => {
// Create a function that return a promise
const promiseFn = () => fetch('https://api.github.com/users/14');
// call retry passing promiseFn argument. Thats it!
return retry(promiseFn)
.then(res => res.json());
};
export default requestUser;
Using options param
import fetch from 'node-fetch';
import retry from 'promise-fn-retry';
const requestUser = () => {
// Create a function that return a promise
const promiseFn = () => fetch('https://api.github.com/users/14');
// You can use options to your retry rules strategy.
const options = {
times: 3,
initialDelay: 100,
};
// call retry passing promiseFn argument. Thats it!
return retry(promiseFn, options)
.then(res => res.json());
};
export default requestUser;
API
retry(promiseFn : Function, [options : Object]) => Promise
Options
These are the available config options for retrying. Only promiseFn is required. If an object isn't provided, the lib will use the default options.
{
// The number of times the lib will retry execute the promiseFn
// Default: 1
times: 3,
// The first wait time to delay
// Default: 100
initialDelayTime: 200,
// (Optional) This callback is executed on each retry. It's useful to log your errors to a log service for example
// Default: null
onRetry: (error) => {
console.log(error);
sendToSentry(error);
sendToKibana(error);
},
// (Optional) This callback is executed before each retry to determine if it's necessary retrying.
// If the function returns true, the next retry will be executed, else the retrying will be canceled.
// Default: null
shouldRetry: (error) => {
console.log(error);
return (error.message === 'FAILED_AUTH');
}
}
Delay strategy
Each retry doubles the current delay.
- The first delay uses the
initialDelayTime
option, like100ms
. - The second uses
200ms
(100 * 2). - The third uses
400ms
...
License
Licensed under the MIT License, Copyright © 2018-present Felippe Maurício.