### Describe the bug

Passing a [FormData](https://github.com/form-data/form-data) object to Axios client may result in request header 'Content-Length': 'NaN' being set.

### To Reproduce

Given the following code:

```ts
// client is an Axios instance
const pdf = await client.get(pdfUrl, { responseType: 'stream' });

const form = new FormData();
form.append('file', pdf.data, { filename, contentType: 'application/pdf' });

const res = await client.post(urlToUploadService, form);
```

We get the following request header added:

```
    headers: AxiosHeaders {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'multipart/form-data; boundary=--------------------------852062351748726458865935',
      'User-Agent': 'axios/1.3.2',
      'Content-Length': 'NaN',
      'Accept-Encoding': 'gzip, compress, deflate, br'
    },
```

I believe `'Content-Length': 'NaN',` is not something we want :) I'm pretty sure the header was not added with Axios version 1.2.6. 

---------

I believe this is related code:

https://github.com/axios/axios/blob/0b449293fc238f30f39ab9ed0fca86a23c8a6a79/lib/adapters/http.js#L266-L267


If we log form's getLength:

```
  form.getLength((err, length) => {
    console.log(err, length);
  }),
```

We'll get a hint of what is going on:

```
null NaN
```

### Axios Version

1.3.2

### Adapter Version

_No response_

### Browser

_No response_

### Browser Version

_No response_

### Node.js Version

v18.14.0

### OS

macos 13.2

### Additional Library Versions

_No response_

### Additional context/Screenshots

- I believe https://github.com/axios/axios/pull/5521 is relevant as it tried to fix some related issue(?).
- Not 100% sure if this is a https://github.com/form-data/form-data issue or an Axios issue, but given it previously worked I though I would register it here.

lib/adapters/http.js
socket.setKeepAlive(true, 1000 * 60);
    });
    
    if (config.timeout) {
      
      const timeout = parseInt(config.timeout, 10);
      if (isNaN(timeout)) {
        reject(new AxiosError(
          'error trying to parse `config.timeout` to int',
          AxiosError.ERR_BAD_OPTION_VALUE,
          config,
          req
        ));
        return;
      }
      
      
      
      
      
      req.setTimeout(timeout, function handleRequestTimeout() {
        if (isDone) return;
        let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
        const transitional = config.transitional || transitionalDefaults;
        if (config.timeoutErrorMessage) {
          timeoutErrorMessage = config.timeoutErrorMessage;
        }
        reject(new AxiosError(
          timeoutErrorMessage,
          transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,