To repeat a request until a condition is met. Used for retrying request whenever a retryable error is raised.
$ npm install --save repeatable-request
or with yarn
$ yarn add --dev repeatable-request
var repeatableRequest = require('repeatable-request');
var sendRequest = function() {
}
// Arguments are: contextArgs, args, done
repeatableRequest({
sendRequest: sendRequest, // Required
isRetryable: function (error, data) {
// You can put any check here, Return true to sendRequest again
return error.retryable === true;
},
backoffRange: {
start: 200,
end: 500,
},
maxRetryCount: 2,
}, { key: 'arguments passed as first parameter to sendRequest' }, function(error, done) {
console.log(error, done);
});
Various options can be passed to the first argument of repeatableRequest
.
Method sending request with callback pattern signature
function(args, done);
repeatableRequest takes following arguments:
- contextArgs
- args
- done
Out of these args and done are passed to sendRequest method
A function in format function(error, data) {}
. If this method returns true then sendRequest is called again.
Default:
function(error) {
return error && error.retryable === true;
}
An object determining minimum and maximum time in milliseconds library should wait before retrying.
Any random value b/w start
and end
is used with setTimeout
function to defer retry execution.
Default:
{ start: 500, end: 1000 }
Maximum number of times request can be repeated Default: 3
In case of all retries were exhausted, then last error received will be passed to done function.