diff --git a/lib/node-repo.js b/lib/node-repo.js index c21210e6..12982f2a 100644 --- a/lib/node-repo.js +++ b/lib/node-repo.js @@ -117,6 +117,8 @@ function getCodeOwnersFile (url, { logger }) { return new Promise((resolve, reject) => { https.get(url, (res) => { if (res.statusCode !== 200) { + // discard the response body so the socket is released + res.resume() logger.error(`Status code: ${res.statusCode}`, 'Error retrieving OWNERS') return reject(res.statusCode) } @@ -127,7 +129,11 @@ function getCodeOwnersFile (url, { logger }) { res.on('end', () => { return resolve(body) }) - }).on('err', (err) => { + res.on('error', (err) => { + logger.error(err, 'Error retrieving OWNERS') + return reject(err) + }) + }).on('error', (err) => { logger.error(err, 'Error retrieving OWNERS') return reject(err) }) diff --git a/test/unit/node-repo-owners.test.js b/test/unit/node-repo-owners.test.js index c62f2c08..483384e4 100644 --- a/test/unit/node-repo-owners.test.js +++ b/test/unit/node-repo-owners.test.js @@ -169,6 +169,28 @@ test('getCodeOwnersFile fail', async (t) => { scope.done() }) +test('getCodeOwnersFile network error', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-6', + prId: 12347, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const base = 'https://localhost' + const filePath = '/CODEOWNERS' + const url = `${base}${filePath}` + const scope = nock(base) + .get(filePath) + .replyWithError('socket hang up') + + await t.assert.rejects(getCodeOwnersFile(url, options), { message: 'socket hang up' }) + scope.done() +}) + test('pingOwners success', async (t) => { const options = { owner: 'nodejs',