1 Commits

Author SHA1 Message Date
Max Garmash
0331e8126d fix: add AbortController timeout to fetchImageEndpoint (#3105)
* fix: add AbortController timeout to fetchImageEndpoint

fetchImageEndpoint uses raw fetch() without timeout control.
Long-running image generation requests (~20-30s) are killed
by Next.js default timeout, producing upstream_error responses.

Replace fetch() with fetchWithTimeout() from shared utils,
defaulting to FETCH_TIMEOUT_MS (120s via OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS).

* fix: return 504 for image fetch timeout, add tests

Address review feedback from gemini-code-assist:
- Import FetchTimeoutError and catch it in fetchImageEndpoint
- Return 504 (Gateway Timeout) instead of 502 for timeout/AbortError
- Add 3 focused unit tests for timeout, non-timeout, and success paths

Clarifies timeout semantics: timeout is a gateway timeout (504), not
a bad gateway (502). Non-timeout fetch errors remain 502.

---------

Co-authored-by: mgarmash <mgarmash@37bytes.com>
2026-06-03 18:19:49 -03:00