https://github.com/redgeoff/backoff-promise
An exponential backoff for promises
https://github.com/redgeoff/backoff-promise
exponential-backoff js promises
Last synced: 12 months ago
JSON representation
An exponential backoff for promises
- Host: GitHub
- URL: https://github.com/redgeoff/backoff-promise
- Owner: redgeoff
- License: mit
- Created: 2017-07-06T13:41:20.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-12-30T17:13:37.000Z (over 3 years ago)
- Last Synced: 2024-04-14T07:27:26.415Z (over 2 years ago)
- Topics: exponential-backoff, js, promises
- Language: JavaScript
- Size: 304 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# backoff-promise
[](https://greenkeeper.io/) [](https://circleci.com/gh/redgeoff/backoff-promise)
An exponential backoff for promises
## Example 1
```js
var i = 0,
Backoff = require('backoff-promise'),
backoff = new Backoff();
var myPromise = function () {
return new Promise(function (resolve, reject) {
if (i++ < 5) {
reject(new Error('transient-error'));
} else {
resolve('foo');
}
});
};
return backoff.run(function () {
return myPromise();
});
```
## Example 2: Different types of errors
```js
var i = 0,
Backoff = require('backoff-promise'),
backoff = new Backoff();
var myPromise = function () {
return new Promise(function (resolve, reject) {
if (i++ < 3) {
reject(new Error('transient-error'));
} else {
reject(new Error('permanent-error'));
}
});
};
var shouldRetry = function (err) {
// Permanent error? If so, then stop retrying
if (err.message === 'permanent-error') {
throw err;
}
};
return backoff.run(function () {
return myPromise();
}, shouldRetry).catch(function (err) {
// err.message = 'transient-error'
});
```
## API
```
var backoff = Backoff(startingRetryAfterMSecs, maxRetryAfterMSecs, backoffFactor, maxRetries)
```