From 0700f2fb72b54f12780e6dafdcadc52ea896a60e Mon Sep 17 00:00:00 2001 From: Esteban Galvis Date: Thu, 28 May 2026 11:43:55 -0500 Subject: [PATCH] fix: enhance error handling for network and server errors in retry logic --- .../folders/infrastructure/HttpRemoteFileSystem.ts | 4 +++- src/infra/drive-server/drive-server.client.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/context/virtual-drive/folders/infrastructure/HttpRemoteFileSystem.ts b/src/context/virtual-drive/folders/infrastructure/HttpRemoteFileSystem.ts index b7f230e40..3f4d0881c 100644 --- a/src/context/virtual-drive/folders/infrastructure/HttpRemoteFileSystem.ts +++ b/src/context/virtual-drive/folders/infrastructure/HttpRemoteFileSystem.ts @@ -69,9 +69,11 @@ export class HttpRemoteFileSystem implements RemoteFileSystem { if (error.cause === 'TOO_MANY_REQUESTS') { return left(new DriveDesktopError('RATE_LIMITED', String(parseRetryAfterMs(error.message)))); } - if (error.cause === 'SERVER_ERROR') { + if (error.cause === 'NETWORK_ERROR' || error.cause === 'SERVER_ERROR') { return left(new DriveDesktopError('INTERNAL_SERVER_ERROR')); } + + return left(new DriveDesktopError('UNKNOWN')); } return left(new DriveDesktopError('UNKNOWN')); } diff --git a/src/infra/drive-server/drive-server.client.ts b/src/infra/drive-server/drive-server.client.ts index 27e04a2cc..a73860bf8 100644 --- a/src/infra/drive-server/drive-server.client.ts +++ b/src/infra/drive-server/drive-server.client.ts @@ -147,9 +147,11 @@ export function createClient(opts: ClientOptions) { if (isAxiosError(error)) { const status = error.response?.status; const message = error.response?.data?.message ?? error.message; - const cause = status ? mapStatusToErrorCause(status) : 'UNKNOWN'; + const cause = status ? mapStatusToErrorCause(status) : 'NETWORK_ERROR'; + return { error: new DriveServerError(cause, status, message) }; } + return { error: new DriveServerError('UNKNOWN', undefined, error instanceof Error ? error.message : 'Unexpected error'), };