diff --git a/packages/requester-node-http/src/__tests__/node-http-requester.test.ts b/packages/requester-node-http/src/__tests__/node-http-requester.test.ts index 9ff3e9ca0..bf8cbd899 100644 --- a/packages/requester-node-http/src/__tests__/node-http-requester.test.ts +++ b/packages/requester-node-http/src/__tests__/node-http-requester.test.ts @@ -278,4 +278,18 @@ describe('error handling', (): void => { expect(response.content).toBe('This is a general error'); expect(response.isTimedOut).toBe(false); }); + + + test('resolves response stream errors', async () => { + nock(testQueryBaseUrl, { reqheaders: headers }) + .post('/foo') + .query(testQueryHeader) + .replyWithError('This is a response stream error'); + + const response = await requester.send(requestStub); + + expect(response.status).toBe(0); + expect(response.content).toBe('This is a response stream error'); + expect(response.isTimedOut).toBe(false); + }); }); diff --git a/packages/requester-node-http/src/createHttpRequester.ts b/packages/requester-node-http/src/createHttpRequester.ts index be3d3d9ed..751b2a3f8 100644 --- a/packages/requester-node-http/src/createHttpRequester.ts +++ b/packages/requester-node-http/src/createHttpRequester.ts @@ -74,6 +74,11 @@ export function createHttpRequester({ isTimedOut: false, }); }); + response.on('error', (error) => { + clearTimeout(connectTimeout as NodeJS.Timeout); + clearTimeout(responseTimeout as NodeJS.Timeout); + resolve({ status: 0, content: error.message, isTimedOut: false }); + }); }); const createTimeout = (timeout: number, content: string): NodeJS.Timeout => {