diff --git a/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.test.ts b/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.test.ts index 7f6f9581dd..ff00e979cf 100644 --- a/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.test.ts +++ b/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.test.ts @@ -36,6 +36,18 @@ describe('ClarifyFailuresFetchMiddleware', () => { ); }); + it('handles Request object input without constructing a new Request', async () => { + const inner = jest.fn().mockRejectedValue(new TypeError('Failed to fetch')); + const middleware = new ClarifyFailuresFetchMiddleware(); + const request = new Request('https://example.com/api/data', { + method: 'POST', + body: JSON.stringify({ key: 'value' }), + }); + await expect(middleware.apply(inner)(request)).rejects.toThrow( + new TypeError('Failed to fetch: POST https://example.com/api/data'), + ); + }); + it('does not modify other TypeErrors', async () => { const error = new TypeError('some other error'); const inner = jest.fn().mockRejectedValue(error); diff --git a/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.ts b/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.ts index 38f6605428..cee9b902aa 100644 --- a/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.ts +++ b/packages/core-app-api/src/apis/implementations/FetchApi/ClarifyFailuresFetchMiddleware.ts @@ -27,8 +27,18 @@ export class ClarifyFailuresFetchMiddleware implements FetchMiddleware { return await next(input as any, init); } catch (e) { if (e instanceof TypeError && e.message === 'Failed to fetch') { - const request = new Request(input as any, init); - e.message = `Failed to fetch: ${request.method} ${request.url}`; + let method: string; + let url: string; + + if (input instanceof Request) { + method = input.method; + url = input.url; + } else { + method = init?.method || 'GET'; + url = String(input); + } + + e.message = `Failed to fetch: ${method} ${url}`; throw e; } throw e;