diff --git a/src/rdrama/session/SessionManager.ts b/src/rdrama/session/SessionManager.ts index 47d624a..11a19ff 100644 --- a/src/rdrama/session/SessionManager.ts +++ b/src/rdrama/session/SessionManager.ts @@ -88,8 +88,16 @@ class SessionManager { } private retryCondition(error: AxiosError): boolean { + // Check for network errors (e.g., socket hang up) + const isNetworkError = !error.response && Boolean(error.code); // No response and error.code is truthy indicates a network error + + // Check for specific HTTP status codes const status = error.response?.status ?? 0; - return status === 429 || status >= 500; + const isRateLimitError = status === 429; + const isServerError = status >= 500; + + // Retry on network errors, rate limit errors, or server errors + return isNetworkError || isRateLimitError || isServerError; }