diff --git a/packages/http-client/__tests__/keepalive.test.ts b/packages/http-client/__tests__/keepalive.test.ts index 1faff5ff52..160069aa5a 100644 --- a/packages/http-client/__tests__/keepalive.test.ts +++ b/packages/http-client/__tests__/keepalive.test.ts @@ -11,6 +11,12 @@ describe('basics', () => { _http.dispose() }) + it.each([true, false])('creates Agent with keepAlive %s', keepAlive => { + const http = new httpm.HttpClient('http-client-tests', [], {keepAlive}) + const agent = http.getAgent('http://postman-echo.com') + expect(agent).toHaveProperty('keepAlive', keepAlive) + }) + it('does basic http get request with keepAlive true', async () => { const res: httpm.HttpClientResponse = await _http.get( 'http://postman-echo.com/get' diff --git a/packages/http-client/src/index.ts b/packages/http-client/src/index.ts index f1170ea021..6f575f7d13 100644 --- a/packages/http-client/src/index.ts +++ b/packages/http-client/src/index.ts @@ -649,7 +649,7 @@ export class HttpClient { agent = this._proxyAgent } - if (this._keepAlive && !useProxy) { + if (!useProxy) { agent = this._agent } @@ -690,18 +690,13 @@ export class HttpClient { this._proxyAgent = agent } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { + // if tunneling agent isn't assigned create a new agent + if (!agent) { const options = {keepAlive: this._keepAlive, maxSockets} agent = usingSsl ? new https.Agent(options) : new http.Agent(options) this._agent = agent } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent - } - if (usingSsl && this._ignoreSslError) { // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options