mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-31 02:17:01 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "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;
 |