<!-- Click "Preview" for a more readable version --

Please read and follow the instructions before submitting an issue:

- Read all our documentation, especially the [README](https://github.com/axios/axios/blob/master/README.md). It may contain information that helps you solve your issue.
- Ensure your issue isn't already [reported](https://github.com/axios/axios/issues?utf8=%E2%9C%93&q=is%3Aissue).
- If you aren't sure that the issue is caused by Axios or you just need help, please use [Stack Overflow](https://stackoverflow.com/questions/tagged/axios) or [our chat](https://gitter.im/mzabriskie/axios).
- If you're reporting a bug, ensure it isn't already fixed in the latest Axios version.
- Don't remove any title of the issue template, or it will be treated as invalid by the bot.

⚠️👆 Feel free to these instructions before submitting the issue 👆⚠️
-->

#### Describe the bug
Uncaught TypeError is raised for axios.create with axios version 0.22.0
Issue is observed while merging the defaultConfig, with instanceConfig.
We are setting instanceConfig only

#### To Reproduce
Exception is raised while creating axios instance with below sample code.


```js
const service  = axios.create({
     baseURL: "host",
     timeout: 3000
})

```

#### Expected behavior
Same works with axios version 0.21.4

#### Environment
 - Axios Version [0.22.0]
 - Browser [Chrome, Edge]
 - Browser Version [Version 94.0.4606.71 (Official Build) (64-bit)]
 - Node.js Version [14.15.1]
 - Additional Library Versions [VueJS 3.2.19, vue-axios 3.3.7]

#### Additional context/Screenshots
Exception stack trace
axios.js:1308 Uncaught TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at mergeConfig (axios.js:1308)
    at Function.create (axios.js:1712)

test/typescript/axios.ts
axios.interceptors.response.eject(responseInterceptorId);
axios.interceptors.response.use(
  (response: AxiosResponse) => Promise.resolve(response),
  (error: any) => Promise.reject(error)
);
axios.interceptors.response.use((response: AxiosResponse) => response);
axios.interceptors.response.use((response: AxiosResponse) => Promise.resolve(response));
const adapter: AxiosAdapter = (config: AxiosRequestConfig) => {
  const response: AxiosResponse<any> = {
    data: { foo: 'bar' },
    status: 200,
    statusText: 'OK',
    headers: { 'X-FOO': 'bar' },
    config
  };
  return Promise.resolve(response);
};
axios.defaults.adapter = adapter;
const promises = [
  Promise.resolve(1),
  Promise.resolve(2)
];
const promise: Promise<number[]> = axios.all(promises);
const fn1 = (a: number, b: number, c: number) => `${a}-${b}-${c}`;
const fn2: (arr: number[]) => string = axios.spread(fn1);
axios.get('/user')
  .then((response: AxiosResponse) => 'foo')
  .then((value: string) => {});
axios.get('/user')
  .then((response: AxiosResponse) => Promise.resolve('foo'))