Skip to content

Commit c0d2eae

Browse files
committed
WIP
1 parent 3833c4e commit c0d2eae

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

lib/client.js

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,32 +1122,30 @@ async function connect (client) {
11221122
})
11231123

11241124
client[kHTTPConnVersion] = 'h2'
1125-
session.on('error', err => {
1125+
session.on('error', function (err) {
11261126
assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
11271127

1128-
session[kError] = err
1128+
this[kError] = err
11291129

1130-
onError(session[kClient], err)
1130+
onError(this[kClient], err)
11311131
})
1132-
session.on('frameError', (type, code, id) => {
1132+
session.on('frameError', function (type, code, id) {
11331133
if (id === 0) {
11341134
const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)
1135-
util.destroy(session, err)
1135+
util.destroy(this, err)
11361136
util.destroy(socket, err)
11371137
}
11381138
})
1139-
session.on('end', () => {
1139+
session.on('end', function () {
11401140
const err = new SocketError('other side closed')
1141-
util.destroy(session, err)
1141+
util.destroy(this, err)
11421142
util.destroy(socket, err)
11431143
})
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}`)
11491146
onSocketClose.call(session)
11501147
})
1148+
session.on('close', onSocketClose)
11511149
session.unref()
11521150

11531151
client[kSocket] = session
@@ -1157,15 +1155,15 @@ async function connect (client) {
11571155
llhttpPromise = null
11581156
}
11591157

1160-
const parser = new Parser(client, socket, llhttpInstance)
1161-
11621158
socket[kNoRef] = false
11631159
socket[kWriting] = false
11641160
socket[kReset] = false
11651161
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
11671166

1168-
addListener(socket, 'error', err => {
11691167
// On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded
11701168
// to the user.
11711169
if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {
@@ -1181,13 +1179,17 @@ async function connect (client) {
11811179
onError(this[kClient], err)
11821180
})
11831181

1184-
addListener(socket, 'readable', () => {
1182+
addListener(socket, 'readable', function () {
1183+
const { [kParser]: parser } = this
1184+
11851185
if (parser) {
11861186
parser.readMore()
11871187
}
11881188
})
11891189

1190-
addListener(socket, 'end', () => {
1190+
addListener(socket, 'end', function () {
1191+
const { [kParser]: parser } = this
1192+
11911193
if (parser && parser.statusCode && !parser.shouldKeepAlive) {
11921194
// We treat all incoming data so far as a valid response.
11931195
parser.onMessageComplete()
@@ -1197,14 +1199,18 @@ async function connect (client) {
11971199
util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))
11981200
})
11991201

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) {
12021206
// We treat all incoming data so far as a valid response.
12031207
parser.onMessageComplete()
12041208
}
12051209

1206-
socket[kParser].destroy()
1207-
socket[kParser] = null
1210+
this[kParser].destroy()
1211+
this[kParser] = null
1212+
1213+
onSocketClose()
12081214
})
12091215

12101216
client[kSocket] = socket
@@ -1215,8 +1221,6 @@ async function connect (client) {
12151221
socket[kClient] = client
12161222
socket[kError] = null
12171223

1218-
addListener(socket, 'close', onSocketClose)
1219-
12201224
if (channels.connected.hasSubscribers) {
12211225
channels.connected.publish({
12221226
connectParams: {

0 commit comments

Comments
 (0)