Skip to content

Commit cd2e352

Browse files
committed
fix: Client.stream writableNeedDrain
Fixes: #441 Refs: nodejs/node#35348 Refs: nodejs/node#35341
1 parent 4208071 commit cd2e352

3 files changed

Lines changed: 10 additions & 2 deletions

File tree

lib/client-stream.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ class StreamHandler extends AsyncResource {
109109
})
110110

111111
this.res = res
112+
113+
const needDrain = res.writableNeedDrain !== undefined
114+
? res.writableNeedDrain
115+
: res._writableState && res._writableState.needDrain
116+
117+
return needDrain
112118
}
113119

114120
onData (chunk) {

lib/core/client.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,9 @@ class Parser extends HTTPParser {
535535
}
536536

537537
try {
538-
request.onHeaders(statusCode, headers, statusCode < 200 ? null : socket[kResume])
538+
if (request.onHeaders(statusCode, headers, statusCode < 200 ? null : socket[kResume]) === false) {
539+
socket[kPause]()
540+
}
539541
} catch (err) {
540542
util.destroy(socket, err)
541543
return 1

lib/core/request.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class Request {
117117

118118
clearRequestTimeout(this)
119119

120-
this[kHandler].onHeaders(statusCode, headers, resume)
120+
return this[kHandler].onHeaders(statusCode, headers, resume)
121121
}
122122

123123
onBody (chunk, offset, length) {

0 commit comments

Comments
 (0)