| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- "use strict";
- /* IMPORT */
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.retryifySync = exports.retryifyAsync = void 0;
- const retryify_queue_1 = require("./retryify_queue");
- /* RETRYIFY */
- const retryifyAsync = (fn, isRetriableError) => {
- return function (timestamp) {
- return function attempt() {
- return retryify_queue_1.default.schedule().then(cleanup => {
- return fn.apply(undefined, arguments).then(result => {
- cleanup();
- return result;
- }, error => {
- cleanup();
- if (Date.now() >= timestamp)
- throw error;
- if (isRetriableError(error)) {
- const delay = Math.round(100 + (400 * Math.random())), delayPromise = new Promise(resolve => setTimeout(resolve, delay));
- return delayPromise.then(() => attempt.apply(undefined, arguments));
- }
- throw error;
- });
- });
- };
- };
- };
- exports.retryifyAsync = retryifyAsync;
- const retryifySync = (fn, isRetriableError) => {
- return function (timestamp) {
- return function attempt() {
- try {
- return fn.apply(undefined, arguments);
- }
- catch (error) {
- if (Date.now() > timestamp)
- throw error;
- if (isRetriableError(error))
- return attempt.apply(undefined, arguments);
- throw error;
- }
- };
- };
- };
- exports.retryifySync = retryifySync;
|