diff --git a/lib/core/dispatchRequest.js b/lib/core/dispatchRequest.js index c7af27b..7bbb45d 100644 --- a/lib/core/dispatchRequest.js +++ b/lib/core/dispatchRequest.js @@ -2,6 +2,7 @@ var utils = require('./../utils'); var transformData = require('./transformData'); +var enhanceError = require('./enhanceError'); /** * Dispatch a request to the server using whichever adapter @@ -54,7 +55,7 @@ module.exports = function dispatchRequest(config) { adapter(resolve, reject, config); } } catch (e) { - reject(e); + reject(enhanceError(e, config)); } }).then(function onFulfilled(response) { // Transform response data @@ -67,4 +68,3 @@ module.exports = function dispatchRequest(config) { return response; }); }; - diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index 0a81d16..6e97459 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -36,6 +36,35 @@ describe('requests', function () { }); }); + it('should reject on adapter errors', function (done) { + // disable jasmine.Ajax since we're hitting a non-existant server anyway + jasmine.Ajax.uninstall(); + + var resolveSpy = jasmine.createSpy('resolve'); + var rejectSpy = jasmine.createSpy('reject'); + + var adapterError = new Error('adapter error'); + var adapterThatFails = function () { + throw adapterError; + }; + + var finish = function () { + expect(resolveSpy).not.toHaveBeenCalled(); + expect(rejectSpy).toHaveBeenCalled(); + var reason = rejectSpy.calls.first().args[0]; + expect(reason).toBe(adapterError); + expect(reason.config.method).toBe('get'); + expect(reason.config.url).toBe('/foo'); + + done(); + }; + + axios('/foo', { + adapter: adapterThatFails + }).then(resolveSpy, rejectSpy) + .then(finish, finish); + }); + it('should reject on network errors', function (done) { // disable jasmine.Ajax since we're hitting a non-existant server anyway jasmine.Ajax.uninstall();