dashp
Version:
Utilities for monadic promises.
43 lines (32 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.retry5 = exports.retry4 = exports.retry3 = exports.retry2 = exports.retry = void 0;
var _caught = _interopRequireDefault(require("./caught"));
var _delay = _interopRequireDefault(require("./delay"));
var _curry = require("./internal/curry");
var _namefn = _interopRequireDefault(require("./internal/namefn"));
var _isPromise = _interopRequireDefault(require("./is-promise"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// times is 0-indexed. A times value of 4, actually makes 5 retries.
const retrier = (times, waitTime) => (action, ...args) => {
const delayModifier = 1.5;
const f = (0, _isPromise.default)(action) ? () => action : action;
const resolver = (iter, waitMs) => {
if (iter <= 0) return f(...args);
return (0, _caught.default)(() => (0, _delay.default)(waitMs, null).then(() => resolver(iter - 1, waitMs * delayModifier)), f(...args));
};
return resolver(times, waitTime);
};
const retry = (0, _namefn.default)("retry", retrier(4, 250));
exports.retry = retry;
const retry2 = (0, _curry.curry2)("retry2", retrier(4, 250));
exports.retry2 = retry2;
const retry3 = (0, _curry.curry3)("retry3", retrier(4, 250));
exports.retry3 = retry3;
const retry4 = (0, _curry.curry4)("retry4", retrier(4, 250));
exports.retry4 = retry4;
const retry5 = (0, _curry.curry5)("retry5", retrier(4, 250));
exports.retry5 = retry5;
//# sourceMappingURL=retry.js.map