diff --git a/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts b/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts index e4b42c3f8..477dab26c 100644 --- a/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts +++ b/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts @@ -159,6 +159,30 @@ describe(`buildFetcher (mock)`, () => { ).resolves.toBe(42) }) + it('gets the unmarshalled value of what responseError returns', () => { + mockedFetch.mockRejectedValue(new TypeError('')) + + return expect( + buildFetcher( + { + ...DEFAULT_SETTINGS, + interceptors: [ + { + responseError: () => Promise.resolve(42), + }, + ], + }, + global.fetch, + )( + { + method: 'GET', + path: '/will-trigger-an-error', + }, + data => `${typeof data === 'number' ? data : ''}-dummy-output`, + ), + ).resolves.toBe('42-dummy-output') + }) + it('gets modified request in response error', () => { mockedFetch.mockRejectedValue(new TypeError('')) diff --git a/packages/clients/src/scw/fetch/build-fetcher.ts b/packages/clients/src/scw/fetch/build-fetcher.ts index e2db67698..e7555ca1c 100644 --- a/packages/clients/src/scw/fetch/build-fetcher.ts +++ b/packages/clients/src/scw/fetch/build-fetcher.ts @@ -112,7 +112,7 @@ export const buildFetcher = (settings: Settings, httpClient: typeof fetch) => { const resErrorInterceptors = prepareResponseErrors() const handledError = (await resErrorInterceptors(finalRequest, err)) as T - return handledError + return unwrapper(handledError) } } }