Automatically add exponential retry abilities to any function that returns a promise, only rejecting after the retries fail.
$ npm install auto-retry
const requestPromise = require('request-promise');
const autoRetry = require('auto-retry');
// Construct a new function with automatic retry capabilities
const requestWithRetry = autoRetry(requestPromise);
// Make a request
requestWithRetry('http://www.vimeo.com')
.then((response) => {
// Process html as usual
})
.catch((error) => {
// Only called after 3 failed attempts
});
Higher order function that makes any promise-returning-function retryable with a jitter'd exponential backoff.
Param | Type | Description |
---|---|---|
fn | function |
Function to be made retryable. |
options | Object |
Configuration. |
options.backoffBase | Number |
Base interval for backoff wait time (in ms). |
options.logRetries | Boolen |
Log retry attempts to the console. |
options.maxRetries | Number |
Total number of retries. |
options.retryCount | Number |
Current retry count. |
options.onRetry | function |
Function to be called after each failed attempt. |
// Construct a new function to only retry once
const requestWithRetry = autoRetry(requestPromise, { maxRetries: 1 });
// Set a minimum backoff interval to 2 seconds
const requestWithRetry = autoRetry(requestPromise, { backoffBase: 2000 });