Package Exports
- back
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (back) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
back
A simple module to be used for creating exponentially weighted backoff attempts. Used in Primus
Example
var http = require('http');
var back = require('back');
//
// Options to use for backoff
//
// Remark: This object is modified so it should be cloned if you are dealing
// with independent backoff attempts and want to use these values as a base.
//
var backoff = {
retries: 3,
minDelay: 1000, // Defaults to 500ms
maxDelay: 10000, // Defaults to infinity
// The following option is shown with its default value but you will most
// likely never define it as it creates the exponential curve.
factor: 2,
};
function retry(err) {
return back(function (fail) {
if (fail) {
// Oh noez we never reconnect :(
console.error('Retry failed with ' + err.message);
process.exit(1);
}
//
// Remark: .attempt and .timeout are added to this object internally
//
console.log('Retry attempt # ' + backoff.attempt +
' being made after ' + backoff.timeout + 'ms');
request();
}, backoff);
}
function request() {
http.get('http://localhost:9000', function (res) {
console.log('Successful Response that will not happen!');
}).on('error', retry);
}
request();
API
back(callback, backoffOpts);
The back
function returns you a function that simply executes the callback
after a setTimeout
. The timeout is what is based on an exponential
backoff of course!
Note:
I am considering switching the backoffOpts
and callback
as I understand it
is an irregular api if enough people want it.