k8s-features
Version:
A Cucumber-js base library for Kubernetes Gherkin tests, with base world class, basic steps, reusable utility functions and k8s client
34 lines (30 loc) • 660 B
JavaScript
const { sleep } = require('./sleep.cjs');
/**
* @template T
* @param {T} fn
* @returns {T}
*/
function retry(fn) {
return async function () {
try {
return await fn(...arguments);
} catch (err) {
if (typeof err.statusCode == 'number' && err.statusCode >= 500) {
await sleep(300);
try {
return await fn(...arguments);
} catch (err2) {
if (typeof err2.statusCode == 'number' && err2.statusCode >= 500) {
await sleep(1000);
return await fn(...arguments);
}
throw err2;
}
}
throw err;
}
}
}
module.exports = {
retry,
};