@@ -93,7 +93,51 @@ export type ErrorCallback =
9393 target ?: ProxyTargetUrl ,
9494 ) => void ;
9595
96- export class ProxyServer extends EventEmitter {
96+ type ProxyServerEventMap = {
97+ error : Parameters < ErrorCallback > ;
98+ start : [
99+ req : http . IncomingMessage ,
100+ res : http . ServerResponse ,
101+ target : ProxyTargetUrl ,
102+ ] ;
103+ open : [ socket : net . Socket ] ;
104+ proxyReq : [
105+ proxyReq : http . ClientRequest ,
106+ req : http . IncomingMessage ,
107+ res : http . ServerResponse ,
108+ options : ServerOptions ,
109+ ] ;
110+ proxyRes : [
111+ proxyRes : http . IncomingMessage ,
112+ req : http . IncomingMessage ,
113+ res : http . ServerResponse ,
114+ ] ;
115+ proxyReqWs : [
116+ proxyReq : http . ClientRequest ,
117+ req : http . IncomingMessage ,
118+ socket : net . Socket ,
119+ options : ServerOptions ,
120+ head : any ,
121+ ] ;
122+ econnreset : [
123+ err : Error ,
124+ req : http . IncomingMessage ,
125+ res : http . ServerResponse ,
126+ target : ProxyTargetUrl ,
127+ ] ;
128+ end : [
129+ req : http . IncomingMessage ,
130+ res : http . ServerResponse ,
131+ proxyRes : http . IncomingMessage ,
132+ ] ;
133+ close : [
134+ proxyRes : http . IncomingMessage ,
135+ proxySocket : net . Socket ,
136+ proxyHead : any ,
137+ ] ;
138+ }
139+
140+ export class ProxyServer extends EventEmitter < ProxyServerEventMap > {
97141 /**
98142 * Used for proxying WS(S) requests
99143 * @param req - Client request.
@@ -206,8 +250,8 @@ export class ProxyServer extends EventEmitter {
206250 // and there's no way for a user of http-proxy-3 to get ahold
207251 // of this res object and attach their own error handler until
208252 // after the passes. So we better attach one ASAP right here:
209- res . on ( "error" , ( ... args ) => {
210- this . emit ( "error" , ... args ) ;
253+ ( res as net . Socket ) . on ( "error" , ( err ) => {
254+ this . emit ( "error" , err , req , res ) ;
211255 } ) ;
212256 }
213257 let counter = args . length - 1 ;
@@ -240,7 +284,7 @@ export class ProxyServer extends EventEmitter {
240284 }
241285
242286 if ( ! requestOptions . target && ! requestOptions . forward ) {
243- this . emit ( "error" , new Error ( "Must set target or forward" ) ) ;
287+ this . emit ( "error" , new Error ( "Must set target or forward" ) , req , res ) ;
244288 return ;
245289 }
246290
0 commit comments