login/node_modules/asyncc/src/retry.js
Amruta Kawade 45b10ffd19
Adding node_modules for dependabot (#67)
* Bump lodash from 4.17.15 to 4.17.19 (#52)

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Amruta Kawade <65217380+AmrutaKawade@users.noreply.github.com>

* Bump @actions/core from 1.1.3 to 1.2.6 (#60)

Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.1.3 to 1.2.6.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Amruta Kawade <65217380+AmrutaKawade@users.noreply.github.com>

* updating node_nodules

* updated package-lock

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-12 14:58:40 +05:30

50 lines
1.3 KiB
JavaScript

import { _times } from './_utils'
/**
* Run `task` max. `times` times. Stops at first iteration where no error is returned.
*
* Calls `callback` if `times` is reached or `task` returned no error.
*
* @name retry
* @memberOf module:serial
* @static
* @method
* @param {Number|Object} times - retry max. `times` times - default=2
* @param {Number} [times.times=2] - max. number of retries
* @param {Number} [times.lag=0] - time-lag in ms between retries
* @param {Function} task - iterator function of type `function (cb: Function, index: Number)`
* @param {Function} [callback] - optional callback `function (errors: Error, result: any)` from last callback.
* @example
* let arr = []
* retry({times: 3, lag: 100}, // max. 3 retries with 100ms time-lag between retries
* (cb, index) => { // task
* let err = index < 2 ? new Error() : null
* arr.push(index)
* cb(err, index)
* }, (err, res) => { // callback
* //> err = null
* //> res = 2
* //> arr = [0, 1, 2]
* }
* )
*/
export default function retry (num, task, callback) {
let i = 0
const { times, lag, fn } = _times(num, { times: 2 })
run()
function cb (err, res) {
if (!err || i >= times) {
callback && callback(err, res)
} else {
fn(() => {
run()
}, lag)
}
}
function run () {
task(cb, i++)
}
}