use addEventListener
This commit is contained in:
parent
aebd5c0565
commit
a483cab690
|
|
@ -25,7 +25,7 @@ import zlib from 'zlib';
|
|||
import type { HTTPCredentials } from '../../types/types';
|
||||
import { TimeoutSettings } from '../common/timeoutSettings';
|
||||
import { getUserAgent } from '../utils/userAgent';
|
||||
import { assert, constructURLBasedOnBaseURL, createGuid, monotonicTime } from '../utils';
|
||||
import { assert, constructURLBasedOnBaseURL, createGuid, eventsHelper, monotonicTime, type RegisteredListener } from '../utils';
|
||||
import { HttpsProxyAgent, SocksProxyAgent } from '../utilsBundle';
|
||||
import { BrowserContext, verifyClientCertificates } from './browserContext';
|
||||
import { CookieStore, domainMatches, parseRawCookie } from './cookieStore';
|
||||
|
|
@ -312,7 +312,7 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
|
||||
let securityDetails: har.SecurityDetails | undefined;
|
||||
|
||||
const cleanup: (() => void)[] = [];
|
||||
const listeners: RegisteredListener[] = [];
|
||||
|
||||
const request = requestConstructor(url, requestOptions as any, async response => {
|
||||
const responseAt = monotonicTime();
|
||||
|
|
@ -481,13 +481,13 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
});
|
||||
request.on('error', reject);
|
||||
|
||||
const disposeListener = () => {
|
||||
listeners.push(
|
||||
eventsHelper.addEventListener(this, APIRequestContext.Events.Dispose, () => {
|
||||
reject(new Error('Request context disposed.'));
|
||||
request.destroy();
|
||||
};
|
||||
this.on(APIRequestContext.Events.Dispose, disposeListener);
|
||||
cleanup.push(() => this.off(APIRequestContext.Events.Dispose, disposeListener));
|
||||
request.on('close', () => cleanup.forEach(c => c()));
|
||||
})
|
||||
);
|
||||
request.on('close', () => eventsHelper.removeEventListeners(listeners));
|
||||
|
||||
request.on('socket', socket => {
|
||||
// happy eyeballs don't emit lookup and connect events, so we use our custom ones
|
||||
|
|
@ -496,13 +496,10 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
tcpConnectionAt = happyEyeBallsTimings.tcpConnectionAt;
|
||||
|
||||
// non-happy-eyeballs sockets
|
||||
const onLookup = () => { dnsLookupAt = monotonicTime(); };
|
||||
socket.once('lookup', onLookup);
|
||||
cleanup.push(() => socket.removeListener('lookup', onLookup));
|
||||
const onConnect = () => { tcpConnectionAt = monotonicTime(); };
|
||||
socket.once('connect', onConnect);
|
||||
cleanup.push(() => socket.removeListener('connect', onConnect));
|
||||
const onSecureConnect = () => {
|
||||
listeners.push(
|
||||
eventsHelper.addEventListener(socket, 'lookup', () => { dnsLookupAt = monotonicTime(); }),
|
||||
eventsHelper.addEventListener(socket, 'connect', () => { tcpConnectionAt = monotonicTime(); }),
|
||||
eventsHelper.addEventListener(socket, 'secureConnect', () => {
|
||||
tlsHandshakeAt = monotonicTime();
|
||||
|
||||
if (socket instanceof TLSSocket) {
|
||||
|
|
@ -515,9 +512,8 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
issuer: peerCertificate.issuer.CN
|
||||
};
|
||||
}
|
||||
};
|
||||
socket.once('secureConnect', onSecureConnect);
|
||||
cleanup.push(() => socket.removeListener('secureConnect', onSecureConnect));
|
||||
}),
|
||||
);
|
||||
|
||||
serverIPAddress = socket.remoteAddress;
|
||||
serverPort = socket.remotePort;
|
||||
|
|
|
|||
Loading…
Reference in a new issue