diff --git a/src/utils.js b/src/utils.js index 8be6d72..14ef98a 100644 --- a/src/utils.js +++ b/src/utils.js @@ -115,37 +115,39 @@ function purgeIfReplyOnce(mock, handler) { function settle(resolve, reject, response, delay) { if (delay > 0) { - setTimeout(function () { - settle(resolve, reject, response); - }, delay); + setTimeout(settle, delay, resolve, reject, response); return; } - if (response.config && response.config.validateStatus) { - response.config.validateStatus(response.status) - ? resolve(response) - : reject( - createAxiosError( - "Request failed with status code " + response.status, - response.config, - response - ) - ); + // Support for axios < 0.13 + if (!rejectWithError && (!response.config || !response.config.validateStatus)) { + if (response.status >= 200 && response.status < 300) { + resolve(response); + } else { + reject(response); + } return; } - // Support for axios < 0.11 - if (response.status >= 200 && response.status < 300) { + if ( + !response.config.validateStatus || + response.config.validateStatus(response.status) + ) { resolve(response); } else { - reject(response); + if (!rejectWithError) { + return reject(response); + } + + reject(createAxiosError( + 'Request failed with status code ' + response.status, + response.config, + response + )); } } function createAxiosError(message, config, response, code) { - // Support for axios < 0.13.0 - if (!rejectWithError) return response; - var error = new Error(message); error.isAxiosError = true; error.config = config; diff --git a/test/basics.spec.js b/test/basics.spec.js index 67b899a..1bf06e0 100644 --- a/test/basics.spec.js +++ b/test/basics.spec.js @@ -414,6 +414,15 @@ describe("MockAdapter basics", function () { }); }); + it("supports providing a validateStatus null value", function () { + instance.defaults.validateStatus = null; + mock.onGet("/foo").reply(500); + + return instance.get("/foo").then(function (response) { + expect(response.status).to.equal(500); + }); + }); + it("respects validatesStatus when requesting unhandled urls", function () { instance.defaults.validateStatus = function () { return true;