@prelude/function
Version:
Function module.
20 lines • 758 B
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const sleep_js_1 = __importDefault(require("./sleep.js"));
const eventually = async (f, { retry = _ => _ < 10, delay = 1000, predicate = _ => Boolean(_), reject = _ => { throw _; } } = {}) => {
const before = Date.now();
let i = 0;
while (retry(i++, Date.now() - before)) {
const r = await f().catch(reject);
if (predicate(r)) {
return r;
}
await (0, sleep_js_1.default)(delay);
}
return reject(undefined);
};
exports.default = eventually;
//# sourceMappingURL=eventually.js.map