diff --git a/packages/server/lib/request.js b/packages/server/lib/request.js index 6bfb5225c49f..28ec6adb3d26 100644 --- a/packages/server/lib/request.js +++ b/packages/server/lib/request.js @@ -48,7 +48,7 @@ const getOriginalHeaders = (req = {}) => { } const getDelayForRetry = function (options = {}) { - const { err, opts, delaysRemaining, retryIntervals, onNext, onElse } = options + const { err, opts, delaysRemaining, retryIntervals, retryFn, onEnd } = options let delay = delaysRemaining.shift() @@ -56,7 +56,7 @@ const getDelayForRetry = function (options = {}) { // no more delays, bailing debug('exhausted all attempts retrying request %o', merge(opts, { err })) - return onElse() + return onEnd() } // figure out which attempt we're on... @@ -76,7 +76,7 @@ const getDelayForRetry = function (options = {}) { attempt, })) - return onNext(delay, attempt) + return retryFn({ delay, attempt }) } const hasRetriableStatusCodeFailure = (res, retryOnStatusCodeFailure) => { @@ -105,8 +105,8 @@ const maybeRetryOnNetworkFailure = function (err, options = {}) { retryIntervals, delaysRemaining, retryOnNetworkFailure, - onNext, - onElse, + retryFn, + onEnd, } = options debug('received an error making http request %o', merge(opts, { err })) @@ -121,12 +121,12 @@ const maybeRetryOnNetworkFailure = function (err, options = {}) { if (retryIntervals.length === 0) { // normally, this request would not be retried, but we need to retry in order to support TLSv1 - return onNext(0, 1) + return retryFn({ delay: 0, attempt: 1 }) } } if (!isTlsVersionError && !isErrEmptyResponseError(err.originalErr || err) && !isRetriableError(err, retryOnNetworkFailure)) { - return onElse() + return onEnd() } // else see if we have more delays left... @@ -135,8 +135,8 @@ const maybeRetryOnNetworkFailure = function (err, options = {}) { opts, retryIntervals, delaysRemaining, - onNext, - onElse, + retryFn, + onEnd, }) } @@ -148,8 +148,8 @@ const maybeRetryOnStatusCodeFailure = function (res, options = {}) { retryIntervals, delaysRemaining, retryOnStatusCodeFailure, - onNext, - onElse, + retryFn, + onEnd, } = options debug('received status code & headers on request %o', { @@ -161,7 +161,7 @@ const maybeRetryOnStatusCodeFailure = function (res, options = {}) { // is this a retryable status code failure? if (!hasRetriableStatusCodeFailure(res, retryOnStatusCodeFailure)) { // if not then we're done here - return onElse() + return onEnd() } // else see if we have more delays left... @@ -170,8 +170,8 @@ const maybeRetryOnStatusCodeFailure = function (res, options = {}) { opts, retryIntervals, delaysRemaining, - onNext, - onElse, + retryFn, + onEnd, }) } @@ -206,7 +206,7 @@ const createRetryingRequestPromise = function (opts) { retryOnStatusCodeFailure, } = opts - const retry = (delay) => { + const retry = ({ delay }) => { return Promise.delay(delay) .then(() => { return createRetryingRequestPromise(opts) @@ -221,8 +221,8 @@ const createRetryingRequestPromise = function (opts) { retryIntervals, delaysRemaining, retryOnNetworkFailure, - onNext: retry, - onElse () { + retryFn: retry, + onEnd () { throw err }, }) @@ -234,8 +234,8 @@ const createRetryingRequestPromise = function (opts) { retryIntervals, delaysRemaining, retryOnStatusCodeFailure, - onNext: retry, - onElse: _.constant(res), + retryFn: retry, + onEnd: _.constant(res), }) }) } @@ -286,7 +286,7 @@ const createRetryingRequestStream = function (opts = {}) { const reqStream = r(opts) let didReceiveResponse = false - const retry = function (delay, attempt) { + const retry = function ({ delay, attempt }) { retryStream.emit('retry', { attempt, delay }) return setTimeout(tryStartStream, delay) @@ -342,8 +342,8 @@ const createRetryingRequestStream = function (opts = {}) { retryIntervals, delaysRemaining, retryOnNetworkFailure, - onNext: retry, - onElse () { + retryFn: retry, + onEnd () { return emitError(err) }, }) @@ -365,8 +365,8 @@ const createRetryingRequestStream = function (opts = {}) { delaysRemaining, retryIntervals, retryOnStatusCodeFailure, - onNext: retry, - onElse () { + retryFn: retry, + onEnd () { debug('successful response received', { requestId }) cleanup() diff --git a/packages/server/test/unit/request_spec.js b/packages/server/test/unit/request_spec.js index 5984e8cd6be7..66f30636ff23 100644 --- a/packages/server/test/unit/request_spec.js +++ b/packages/server/test/unit/request_spec.js @@ -66,12 +66,12 @@ describe('lib/request', () => { code: 'ECONNREFUSED', } - const onNext = sinon.stub() + const retryFn = sinon.stub() retryIntervals.forEach(() => { return request.getDelayForRetry({ err, - onNext, + retryFn, retryIntervals, delaysRemaining, }) @@ -79,11 +79,11 @@ describe('lib/request', () => { expect(delaysRemaining).to.be.empty - expect(onNext.args).to.deep.eq([ - [0, 1], - [999, 2], - [100, 3], - [200, 4], + expect(retryFn.args).to.deep.eq([ + [{ delay: 0, attempt: 1 }], + [{ delay: 999, attempt: 2 }], + [{ delay: 100, attempt: 3 }], + [{ delay: 200, attempt: 4 }], ]) }) @@ -95,37 +95,37 @@ describe('lib/request', () => { code: 'ECONNRESET', } - const onNext = sinon.stub() + const retryFn = sinon.stub() request.getDelayForRetry({ err, - onNext, + retryFn, retryIntervals, delaysRemaining, }) expect(delaysRemaining).to.have.length(3) - expect(onNext).to.be.calledWith(2000, 1) + expect(retryFn).to.be.calledWith({ delay: 2000, attempt: 1 }) }) - it('calls onElse when delaysRemaining is exhausted', () => { + it('calls onEnd when delaysRemaining is exhausted', () => { const retryIntervals = [1, 2, 3, 4] const delaysRemaining = [] - const onNext = sinon.stub() - const onElse = sinon.stub() + const retryFn = sinon.stub() + const onEnd = sinon.stub() request.getDelayForRetry({ - onElse, - onNext, + onEnd, + retryFn, retryIntervals, delaysRemaining, }) - expect(onElse).to.be.calledWithExactly() + expect(onEnd).to.be.calledWithExactly() - expect(onNext).not.to.be.called + expect(retryFn).not.to.be.called }) })