diff --git a/lib/shared/s3-packages.js b/lib/shared/s3-packages.js index 63d14a0c..7fe8f24e 100644 --- a/lib/shared/s3-packages.js +++ b/lib/shared/s3-packages.js @@ -148,6 +148,10 @@ exports.getRemoteVersions = _.memoize((bucketUrl) => { }) .catch({ code: 'ENOTFOUND' + }, { + code: 'ECONNRESET' + }, { + code: 'ECONNREFUSED' }, { code: 'ETIMEDOUT' }, () => { diff --git a/tests/shared/s3-packages.spec.js b/tests/shared/s3-packages.spec.js index 655a80e0..3aeedd55 100644 --- a/tests/shared/s3-packages.spec.js +++ b/tests/shared/s3-packages.spec.js @@ -643,6 +643,52 @@ describe('Shared: s3Packages', function() { }); + describe('given ECONNRESET', function() { + + beforeEach(function() { + const error = new Error('ECONNRESET'); + error.code = 'ECONNRESET'; + + this.requestGetAsyncStub = m.sinon.stub(request, 'getAsync'); + this.requestGetAsyncStub.returns(Bluebird.reject(error)); + }); + + afterEach(function() { + this.requestGetAsyncStub.restore(); + }); + + it('should resolve an empty array', function(done) { + s3Packages.getRemoteVersions(s3Packages.BUCKET_URL.PRODUCTION).then((versions) => { + m.chai.expect(versions).to.deep.equal([]); + done(); + }).catch(done); + }); + + }); + + describe('given ECONNREFUSED', function() { + + beforeEach(function() { + const error = new Error('ECONNREFUSED'); + error.code = 'ECONNREFUSED'; + + this.requestGetAsyncStub = m.sinon.stub(request, 'getAsync'); + this.requestGetAsyncStub.returns(Bluebird.reject(error)); + }); + + afterEach(function() { + this.requestGetAsyncStub.restore(); + }); + + it('should resolve an empty array', function(done) { + s3Packages.getRemoteVersions(s3Packages.BUCKET_URL.PRODUCTION).then((versions) => { + m.chai.expect(versions).to.deep.equal([]); + done(); + }).catch(done); + }); + + }); + }); describe('.getLatestVersion()', function() {