diff --git a/.labrc.js b/.labrc.js new file mode 100644 index 000000000..cb1bddb75 --- /dev/null +++ b/.labrc.js @@ -0,0 +1,9 @@ +'use strict'; + +const Somever = require('@hapi/somever'); + +module.exports = { + 'coverage-predicates': { + allowsStoppedReq: Somever.match(process.version, '<=18'), + } +}; diff --git a/lib/core.js b/lib/core.js index 6ab2f9bdd..09feebfd7 100755 --- a/lib/core.js +++ b/lib/core.js @@ -506,6 +506,12 @@ exports = module.exports = internals.Core = class { return (req, res) => { + // $lab:coverage:off$ $not:allowsStoppedReq$ + if (this.phase === 'stopping') { + return req.destroy(); + } + // $lab:coverage:on$ $not:allowsStoppedReq$ + // Create request const request = Request.generate(this.root, req, res, options); diff --git a/lib/transmit.js b/lib/transmit.js index 7a1424153..b4500e52d 100755 --- a/lib/transmit.js +++ b/lib/transmit.js @@ -284,9 +284,7 @@ internals.end = function (env, event, err) { env.team = null; if (request.raw.res.writableEnded) { - if (!event) { - request.info.responded = Date.now(); - } + request.info.responded = Date.now(); team.attend(); return; diff --git a/test/core.js b/test/core.js index 58a7a18d6..f2bde9f32 100755 --- a/test/core.js +++ b/test/core.js @@ -928,11 +928,13 @@ describe('Core', () => { const { res, payload } = await first; const stop = server.stop(); - await expect(second).to.reject(); + const err = await expect(second).to.reject(Error); await stop; + await Hoek.wait(10); expect(res.headers.connection).to.equal('keep-alive'); expect(payload.toString()).to.equal('ok'); + expect(err.code).to.equal('ECONNRESET'); expect(server._core.started).to.equal(false); });