summaryrefslogtreecommitdiff
path: root/packages/core/src/utils/retry.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/utils/retry.ts')
-rw-r--r--packages/core/src/utils/retry.ts17
1 files changed, 13 insertions, 4 deletions
diff --git a/packages/core/src/utils/retry.ts b/packages/core/src/utils/retry.ts
index 01651950..e5d65751 100644
--- a/packages/core/src/utils/retry.ts
+++ b/packages/core/src/utils/retry.ts
@@ -18,7 +18,7 @@ export interface RetryOptions {
onPersistent429?: (
authType?: string,
error?: unknown,
- ) => Promise<string | null>;
+ ) => Promise<string | boolean | null>;
authType?: string;
}
@@ -102,13 +102,16 @@ export async function retryWithBackoff<T>(
) {
try {
const fallbackModel = await onPersistent429(authType, error);
- if (fallbackModel) {
+ if (fallbackModel !== false && fallbackModel !== null) {
// Reset attempt counter and try with new model
attempt = 0;
consecutive429Count = 0;
currentDelay = initialDelayMs;
// With the model updated, we continue to the next attempt
continue;
+ } else {
+ // Fallback handler returned null/false, meaning don't continue - stop retry process
+ throw error;
}
} catch (fallbackError) {
// If fallback fails, continue with original error
@@ -126,13 +129,16 @@ export async function retryWithBackoff<T>(
) {
try {
const fallbackModel = await onPersistent429(authType, error);
- if (fallbackModel) {
+ if (fallbackModel !== false && fallbackModel !== null) {
// Reset attempt counter and try with new model
attempt = 0;
consecutive429Count = 0;
currentDelay = initialDelayMs;
// With the model updated, we continue to the next attempt
continue;
+ } else {
+ // Fallback handler returned null/false, meaning don't continue - stop retry process
+ throw error;
}
} catch (fallbackError) {
// If fallback fails, continue with original error
@@ -155,13 +161,16 @@ export async function retryWithBackoff<T>(
) {
try {
const fallbackModel = await onPersistent429(authType, error);
- if (fallbackModel) {
+ if (fallbackModel !== false && fallbackModel !== null) {
// Reset attempt counter and try with new model
attempt = 0;
consecutive429Count = 0;
currentDelay = initialDelayMs;
// With the model updated, we continue to the next attempt
continue;
+ } else {
+ // Fallback handler returned null/false, meaning don't continue - stop retry process
+ throw error;
}
} catch (fallbackError) {
// If fallback fails, continue with original error