Skip to content

Commit 30c39bc

Browse files
lukechildssindresorhus
authored andcommitted
Check req.connection exists before attaching event listeners (#429)
1 parent 4f5e6bf commit 30c39bc

1 file changed

Lines changed: 27 additions & 25 deletions

File tree

index.js

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -227,33 +227,35 @@ function requestAsEventEmitter(opts) {
227227
total: uploadBodySize
228228
});
229229

230-
req.connection.once('connect', () => {
231-
const uploadEventFrequency = 150;
232-
233-
progressInterval = setInterval(() => {
234-
const lastUploaded = uploaded;
235-
const headersSize = Buffer.byteLength(req._header);
236-
uploaded = req.connection.bytesWritten - headersSize;
237-
238-
// Prevent the known issue of `bytesWritten` being larger than body size
239-
if (uploadBodySize && uploaded > uploadBodySize) {
240-
uploaded = uploadBodySize;
241-
}
230+
if (req.connection) {
231+
req.connection.once('connect', () => {
232+
const uploadEventFrequency = 150;
233+
234+
progressInterval = setInterval(() => {
235+
const lastUploaded = uploaded;
236+
const headersSize = Buffer.byteLength(req._header);
237+
uploaded = req.connection.bytesWritten - headersSize;
238+
239+
// Prevent the known issue of `bytesWritten` being larger than body size
240+
if (uploadBodySize && uploaded > uploadBodySize) {
241+
uploaded = uploadBodySize;
242+
}
242243

243-
// Don't emit events with unchanged progress and
244-
// prevent last event from being emitted, because
245-
// it's emitted when `response` is emitted
246-
if (uploaded === lastUploaded || uploaded === uploadBodySize) {
247-
return;
248-
}
244+
// Don't emit events with unchanged progress and
245+
// prevent last event from being emitted, because
246+
// it's emitted when `response` is emitted
247+
if (uploaded === lastUploaded || uploaded === uploadBodySize) {
248+
return;
249+
}
249250

250-
ee.emit('uploadProgress', {
251-
percent: uploadBodySize ? uploaded / uploadBodySize : 0,
252-
transferred: uploaded,
253-
total: uploadBodySize
254-
});
255-
}, uploadEventFrequency);
256-
});
251+
ee.emit('uploadProgress', {
252+
percent: uploadBodySize ? uploaded / uploadBodySize : 0,
253+
transferred: uploaded,
254+
total: uploadBodySize
255+
});
256+
}, uploadEventFrequency);
257+
});
258+
}
257259
});
258260

259261
if (opts.gotTimeout) {

0 commit comments

Comments
 (0)