@@ -1122,32 +1122,30 @@ async function connect (client) {
1122
1122
} )
1123
1123
1124
1124
client [ kHTTPConnVersion ] = 'h2'
1125
- session . on ( 'error' , err => {
1125
+ session . on ( 'error' , function ( err ) {
1126
1126
assert ( err . code !== 'ERR_TLS_CERT_ALTNAME_INVALID' )
1127
1127
1128
- session [ kError ] = err
1128
+ this [ kError ] = err
1129
1129
1130
- onError ( session [ kClient ] , err )
1130
+ onError ( this [ kClient ] , err )
1131
1131
} )
1132
- session . on ( 'frameError' , ( type , code , id ) => {
1132
+ session . on ( 'frameError' , function ( type , code , id ) {
1133
1133
if ( id === 0 ) {
1134
1134
const err = new InformationalError ( `HTTP/2: "frameError" received - type ${ type } , code ${ code } ` )
1135
- util . destroy ( session , err )
1135
+ util . destroy ( this , err )
1136
1136
util . destroy ( socket , err )
1137
1137
}
1138
1138
} )
1139
- session . on ( 'end' , ( ) => {
1139
+ session . on ( 'end' , function ( ) {
1140
1140
const err = new SocketError ( 'other side closed' )
1141
- util . destroy ( session , err )
1141
+ util . destroy ( this , err )
1142
1142
util . destroy ( socket , err )
1143
1143
} )
1144
- session . on ( 'goaway' , ( code ) => {
1145
- // TODO (fix): How is this different from onSOcketClose?
1146
-
1147
- session [ kError ] = new InformationalError ( `HTTP/2: "GOAWAY" frame received with code ${ code } ` )
1148
-
1144
+ session . on ( 'goaway' , function ( code ) {
1145
+ this [ kError ] = new InformationalError ( `HTTP/2: "GOAWAY" frame received with code ${ code } ` )
1149
1146
onSocketClose . call ( session )
1150
1147
} )
1148
+ session . on ( 'close' , onSocketClose )
1151
1149
session . unref ( )
1152
1150
1153
1151
client [ kSocket ] = session
@@ -1157,15 +1155,15 @@ async function connect (client) {
1157
1155
llhttpPromise = null
1158
1156
}
1159
1157
1160
- const parser = new Parser ( client , socket , llhttpInstance )
1161
-
1162
1158
socket [ kNoRef ] = false
1163
1159
socket [ kWriting ] = false
1164
1160
socket [ kReset ] = false
1165
1161
socket [ kBlocking ] = false
1166
- socket [ kParser ] = parser
1162
+ socket [ kParser ] = new Parser ( client , socket , llhttpInstance )
1163
+
1164
+ addListener ( socket , 'error' , function ( err ) {
1165
+ const { [ kParser ] : parser } = this
1167
1166
1168
- addListener ( socket , 'error' , err => {
1169
1167
// On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded
1170
1168
// to the user.
1171
1169
if ( err . code === 'ECONNRESET' && parser . statusCode && ! parser . shouldKeepAlive ) {
@@ -1181,13 +1179,17 @@ async function connect (client) {
1181
1179
onError ( this [ kClient ] , err )
1182
1180
} )
1183
1181
1184
- addListener ( socket , 'readable' , ( ) => {
1182
+ addListener ( socket , 'readable' , function ( ) {
1183
+ const { [ kParser ] : parser } = this
1184
+
1185
1185
if ( parser ) {
1186
1186
parser . readMore ( )
1187
1187
}
1188
1188
} )
1189
1189
1190
- addListener ( socket , 'end' , ( ) => {
1190
+ addListener ( socket , 'end' , function ( ) {
1191
+ const { [ kParser ] : parser } = this
1192
+
1191
1193
if ( parser && parser . statusCode && ! parser . shouldKeepAlive ) {
1192
1194
// We treat all incoming data so far as a valid response.
1193
1195
parser . onMessageComplete ( )
@@ -1197,14 +1199,18 @@ async function connect (client) {
1197
1199
util . destroy ( this , new SocketError ( 'other side closed' , util . getSocketInfo ( this ) ) )
1198
1200
} )
1199
1201
1200
- addListener ( socket , 'close' , ( ) => {
1201
- if ( ! socket [ kError ] && parser . statusCode && ! parser . shouldKeepAlive ) {
1202
+ addListener ( socket , 'close' , function ( ) {
1203
+ const { [ kParser ] : parser } = this
1204
+
1205
+ if ( ! this [ kError ] && parser . statusCode && ! parser . shouldKeepAlive ) {
1202
1206
// We treat all incoming data so far as a valid response.
1203
1207
parser . onMessageComplete ( )
1204
1208
}
1205
1209
1206
- socket [ kParser ] . destroy ( )
1207
- socket [ kParser ] = null
1210
+ this [ kParser ] . destroy ( )
1211
+ this [ kParser ] = null
1212
+
1213
+ onSocketClose ( )
1208
1214
} )
1209
1215
1210
1216
client [ kSocket ] = socket
@@ -1215,8 +1221,6 @@ async function connect (client) {
1215
1221
socket [ kClient ] = client
1216
1222
socket [ kError ] = null
1217
1223
1218
- addListener ( socket , 'close' , onSocketClose )
1219
-
1220
1224
if ( channels . connected . hasSubscribers ) {
1221
1225
channels . connected . publish ( {
1222
1226
connectParams : {
0 commit comments