diff --git a/lib/adapters/http.js b/lib/adapters/http.js index c36f0c7f8d..951e400fa6 100755 --- a/lib/adapters/http.js +++ b/lib/adapters/http.js @@ -138,6 +138,16 @@ module.exports = function httpAdapter(config) { var isHttpsRequest = isHttps.test(protocol); var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + try { + buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''); + } catch (err) { + var customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + reject(customErr); + } + var options = { path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''), method: config.method.toUpperCase(), diff --git a/test/unit/adapters/http.js b/test/unit/adapters/http.js index 42c6358e72..018c2fc6cc 100644 --- a/test/unit/adapters/http.js +++ b/test/unit/adapters/http.js @@ -492,6 +492,21 @@ describe('supports http with nodejs', function () { }); }); + it('should display error while parsing params', function (done) { + server = http.createServer(function () { + + }).listen(4444, function () { + axios.get('http://localhost:4444/', { + params: { + errorParam: new Date(undefined), + }, + }).catch(function (err) { + assert.deepEqual(err.exists, true) + done(); + }); + }); + }); + it('should support sockets', function (done) { // Different sockets for win32 vs darwin/linux var socketName = './test.sock';