Merge branch 'exponential-backoff' into sse-and-backoff

This commit is contained in:
2026-08-12 03:17:13 +00:00
3 changed files with 76 additions and 9 deletions
+26 -1
View File
@@ -263,7 +263,32 @@ export class ExponentialBackoff {
// Wait before going to the next attempt
const delay = this.#calculateDelay(this.#options, attempt);
await new Promise((resolve) => setTimeout(resolve, delay));
// Wait for the delay or the abort signal
await new Promise((resolve, reject) => {
// Set a timeout to resolve the promise after the delay
// eslint-disable-next-line prefer-const
let timeout: ReturnType<typeof setTimeout>;
// Handle the abort signal
const abortHandler = (): void => {
clearTimeout(timeout);
abortController.signal.removeEventListener('abort', abortHandler);
reject(new ExponentialBackoffStoppedRetriesError(abortController.signal.reason));
};
// Handle the timeout
const timeoutHandler = (): void => {
abortController.signal.removeEventListener('abort', abortHandler);
resolve(undefined);
};
// Set the timeout
timeout = setTimeout(timeoutHandler, delay);
// Add the abort handler to the abort signal
abortController.signal.addEventListener('abort', abortHandler);
});
attempt++;
}