From c009c4060629700a99e8554376b63ff1643bea63 Mon Sep 17 00:00:00 2001 From: Oleg Saprykin Date: Fri, 20 Mar 2026 18:31:36 +0300 Subject: [PATCH] refactor: use .finally() to always delete limiter from Map Address bot review feedback: use .finally() instead of .then()/.catch() so limiters.delete() runs regardless of whether stop() succeeds or throws (e.g. already stopped by concurrent 429). Co-Authored-By: Claude Opus 4.6 (1M context) --- open-sse/services/rateLimitManager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/open-sse/services/rateLimitManager.ts b/open-sse/services/rateLimitManager.ts index d7cebc4935..70e0946cfb 100644 --- a/open-sse/services/rateLimitManager.ts +++ b/open-sse/services/rateLimitManager.ts @@ -350,9 +350,9 @@ export function updateFromHeaders(provider, connectionId, headers, status, model // be hours for providers like Codex with long rate limit windows). // This lets upstream callers (e.g. LiteLLM) trigger fallback to other providers. // After stop, delete from Map so getLimiter() creates a fresh instance. - limiter.stop({ dropWaitingJobs: true }).then(() => { + limiter.stop({ dropWaitingJobs: true }).finally(() => { limiters.delete(limiterKey); - }).catch(() => {}); + }); return; }