@reclaimprotocol/attestor-core
Version:
<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>
28 lines • 1.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeWithRetries = executeWithRetries;
/**
* Execute a function, and upon failure -- retry
* based on specified options.
*/
async function executeWithRetries(code, { maxRetries = 3, shouldRetry, logger, }) {
let retries = 0;
while (retries < maxRetries) {
try {
const result = await code(retries);
return result;
}
catch (err) {
retries += 1;
if (retries >= maxRetries) {
throw err;
}
if (!shouldRetry(err)) {
throw err;
}
logger.info({ err, retries }, 'retrying failed operation');
}
}
throw new Error('retries exhausted');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZXRyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsZ0RBNEJDO0FBaENEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FDdkMsSUFBcUMsRUFDckMsRUFDQyxVQUFVLEdBQUcsQ0FBQyxFQUNkLFdBQVcsRUFDWCxNQUFNLEdBQ1k7SUFFbkIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0lBQ2YsT0FBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDbEMsT0FBTyxNQUFNLENBQUE7UUFDZCxDQUFDO1FBQUMsT0FBTSxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDLENBQUE7WUFDWixJQUFHLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxHQUFHLENBQUE7WUFDVixDQUFDO1lBRUQsSUFBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEdBQUcsQ0FBQTtZQUNWLENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLDJCQUEyQixDQUFDLENBQUE7UUFDM0QsQ0FBQztJQUNGLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFDckMsQ0FBQyJ9
;