Files
cloudron-box/src/promise-retry.js
T
Girish Ramakrishnan cc684b4ea0 acme: async'ify
2021-05-06 22:52:49 -07:00

24 lines
571 B
JavaScript

'use strict';
exports = module.exports = promiseRetry;
const assert = require('assert'),
delay = require('delay'),
util = require('util');
async function promiseRetry(options, asyncFunction) {
assert.strictEqual(typeof options, 'object');
assert(util.types.isAsyncFunction(asyncFunction));
const { times, interval } = options;
for (let i = 0; i < times; i++) {
try {
return await asyncFunction();
} catch (error) {
if (i === times - 1) throw error;
await delay(interval);
}
}
}