#### Describe the bug
This bugreport very similar to #315 which was implemented and fixed, however I think this is not solved yet. When the query params parsing process itself fails (before the request even started), the resulting error object does not contain request information, making it hard to debug, especially with as error reports.

#### To Reproduce
```js
axios.get("", {
  params: {
    someParam: new Date(undefined)
  }
}).catch((e) => {
  console.log(e);
})
```
Only prints
```
RangeError: Invalid time value
    at Date.toISOString (<anonymous>)
    at parseValue (buildURL.js:53)
    at Object.forEach (utils.js:219)
    at serialize (buildURL.js:51)
    at Object.forEach (utils.js:225)
    at buildURL (buildURL.js:38)
    at dispatchXhrRequest (xhr.js:45)
    at new Promise (<anonymous>)
    at xhrAdapter (xhr.js:13)
    at dispatchRequest (dispatchRequest.js:53)
```

#### Expected behavior
I would expect the error to have information about the request (uri, config, etc) just like when the error is thrown on server response error.

#### Environment
 - Axios Version 0.21.1
 - Adapter http
 - Browser chromium 
 - Browser Version 87.0.4280.141
 - Node.js Version 12.20.0
 - OS: Manjaro 20.2.1
 - Additional Library Versions none

#### Additional context/Screenshots
dont have any. – I dont think that omitting this category should result in the automatic closing of an issue :-/

Cheers

test/unit/adapters/http.js
error = err;
        failure = true;
      });
      setTimeout(function () {
        assert.equal(success, false, 'request should not succeed');
        assert.equal(failure, true, 'request should fail');
        assert.equal(error.code, 'ECONNABORTED');
        assert.equal(error.message, 'timeout of 250ms exceeded');
        done();
      }, 300);
    });
  });
  it('should respect the timeoutErrorMessage property', function (done) {
    server = http.createServer(function (req, res) {
      setTimeout(function () {
        res.end();
      }, 1000);
    }).listen(4444, function () {
      var success = false, failure = false;
      var error;
      axios.get('http://localhost:4444/', {
        timeout: 250,
        timeoutErrorMessage: 'oops, timeout',
      }).then(function (res) {
        success = true;
      }).catch(function (err) {
        error = err;
        failure = true;
      });
      setTimeout(function () {