41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
# retry-as-promised
|
|
|
|
Retry promises when they fail, based upon [any-promise](https://github.com/kevinbeaty/any-promise).
|
|
|
|
## Installation
|
|
|
|
```sh
|
|
$ npm install --save retry-as-promised
|
|
$ yarn add retry-as-promised
|
|
```
|
|
|
|
## Configuration
|
|
|
|
```js
|
|
var retry = require('retry-as-promised');
|
|
|
|
var warningFn = function(msg){ someLoggingFunction(msg, 'notice'); };
|
|
|
|
// Will call the until max retries or the promise is resolved.
|
|
return retry(function (options) {
|
|
// options.current, times callback has been called including this call
|
|
return promise;
|
|
}, {
|
|
max: 3, // maximum amount of tries
|
|
timeout: 10000 // throw if no response or error within millisecond timeout, default: undefined,
|
|
match: [ // Must match error signature (ala bluebird catch) to continue
|
|
Sequelize.ConnectionError,
|
|
'SQLITE_BUSY'
|
|
],
|
|
backoffBase: 1000 // Initial backoff duration in ms. Default: 100,
|
|
backoffExponent: 1.5 // Exponent to increase backoff each try. Default: 1.1
|
|
report: warningFn, // the function used for reporting; must have a (string, object) argument signature, where string is the message that will passed in by retry-as-promised, and the object will be this configuration object + the $current property
|
|
name: 'SourceX' // if user supplies string, it will be used when composing error/reporting messages; else if retry gets a callback, uses callback name in erroring/reporting; else (default) uses literal string 'unknown'
|
|
});
|
|
```
|
|
|
|
## Tested with
|
|
|
|
- Bluebird
|
|
- Q
|