@dasch-swiss/dsp-js
Version:
TypeScript client library for DSP-API
30 lines • 1.11 kB
JavaScript
import { retry, timer } from 'rxjs';
/**
*
* Retries failed HTTP requests.
*
* @param delayMs delay in milliseconds before the request is retried.
* @param maxRetries maximum number of retries.
* @param retryOnErrorStatus HTTP error status codes for which the request is retried.
* @param logError if true, error is written to the console error log.
*
* @category Internal
*/
export function retryOnError(delayMs, maxRetries, retryOnErrorStatus, logError) {
const retries = maxRetries;
// inspired by https://medium.com/angular-in-depth/retry-failed-http-requests-in-angular-f5959d486294
return (src) => src.pipe(retry({
count: maxRetries,
delay: (error, retryCount) => {
if (retryOnErrorStatus.indexOf(error.status) !== -1) {
if (logError)
console.error('HTTP request failed:', 'status:', error.status, 'retries:', retryCount, 'error:', error);
return timer(delayMs);
}
else {
throw error;
}
},
}));
}
//# sourceMappingURL=retryOnError.js.map