From 701893b4720fc69ad8b0554f3fb53d4613aae190 Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Fri, 17 Nov 2017 11:22:22 +0000 Subject: [PATCH] fix(s3): Fix EAI_AGAIN error at startup with no internet connection (#1855) Change-type: patch --- lib/shared/s3-packages.js | 2 ++ tests/shared/s3-packages.spec.js | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/shared/s3-packages.js b/lib/shared/s3-packages.js index 54b1d602..949e4044 100644 --- a/lib/shared/s3-packages.js +++ b/lib/shared/s3-packages.js @@ -160,6 +160,8 @@ exports.getRemoteVersions = _.memoize((bucketUrl) => { }, { code: 'EHOSTDOWN' }, { + code: 'EAI_AGAIN' + }, { // May happen when behind a proxy code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY' diff --git a/tests/shared/s3-packages.spec.js b/tests/shared/s3-packages.spec.js index 07b88b81..1b00e500 100644 --- a/tests/shared/s3-packages.spec.js +++ b/tests/shared/s3-packages.spec.js @@ -649,6 +649,28 @@ describe('Shared: s3Packages', function () { }) }) + describe('given EAI_AGAIN', function () { + beforeEach(function () { + const error = new Error('EAI_AGAIN') + error.code = 'EAI_AGAIN' + + this.requestGetAsyncStub = m.sinon.stub(request, 'getAsync') + this.requestGetAsyncStub.returns(Bluebird.reject(error)) + }) + + afterEach(function () { + this.requestGetAsyncStub.restore() + }) + + it('should be rejected with a user error with code UPDATE_USER_ERROR', function (done) { + s3Packages.getRemoteVersions(s3Packages.BUCKET_URL.PRODUCTION).catch((error) => { + m.chai.expect(errors.isUserError(error)).to.be.true + m.chai.expect(error.code).to.equal('UPDATE_USER_ERROR') + done() + }) + }) + }) + describe('given ECONNRESET', function () { beforeEach(function () { const error = new Error('ECONNRESET')