feross / simple-get

Simplest way to make http get requests. Supports HTTPS, redirects, gzip/deflate, streams in < 100 lines
MIT License
401 stars 50 forks source link

HTTP 500 response not returned with Node.js 14 and concat #65

Open arachnetech opened 3 years ago

arachnetech commented 3 years ago

After upgrading to Node.js 14, I do not receive HTTP 500 responses with code of the form:

get.concat('http://example.com', function (err, res, data) {
} );

This can be fixed by checking explicitly for res.statusCode != 200 in simple-get's concat function, i.e.

simpleGet.concat = (opts, cb) => {
  return simpleGet(opts, (err, res) => {
    if (err) return cb(err)
    if (res.statusCode != 200) return cb(null,res)   // <---- added line
    concat(res, (err, data) => {

It appears that a change in Node.js 14 means that the stream end event is no-longer called in this situation, so simple-concat never returns output.

bendrucker commented 3 years ago

See #66, I added some test coverage to validate that this behavior continues to work in Node 14. It would be really unexpected for http to change stream handling to change based on a status code, that's a higher (user) level concern.

If you could share runnable code that might help identify your issue.