#### 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

lib/adapters/http.js
var username = config.auth.username || '';
      var password = config.auth.password || '';
      auth = username + ':' + password;
    }
    
    var fullPath = buildFullPath(config.baseURL, config.url);
    var parsed = url.parse(fullPath);
    var protocol = parsed.protocol || 'http:';
    if (!auth && parsed.auth) {
      var urlAuth = parsed.auth.split(':');
      var urlUsername = urlAuth[0] || '';
      var urlPassword = urlAuth[1] || '';
      auth = urlUsername + ':' + urlPassword;
    }
    if (auth && headerNames.authorization) {
      delete headers[headerNames.authorization];
    }
    var isHttpsRequest = isHttps.test(protocol);
    var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
    var options = {
      path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''),
      method: config.method.toUpperCase(),
      headers: headers,
      agent: agent,
      agents: { http: config.httpAgent, https: config.httpsAgent },
      auth: auth
    };
    if (config.socketPath) {
      options.socketPath = config.socketPath;
    } else {