#### Is your feature request related to a problem? Please describe.
It's related to the problem of sending `multipart/form-data` with Axios on Node.js
#### Describe the solution you'd like
I would like to be able to do
```js
const axios = require('axios');
const { FormData } = require('formdata-node');
const form = new FormData();
axios.post('http://localhost:8888', form)
```

#### Describe alternatives you've considered
N/A

#### Additional context
`got` [recommends](https://github.com/sindresorhus/got/blob/e3936629ce8b075749f33260b8cf036c7832e448/documentation/2-options.md#body) using [`formdata-node`](https://www.npmjs.com/package/formdata-node). Axios [recommends](https://axios-http.com/docs/urlencoded#form-data) [`form-data`](https://www.npmjs.com/package/form-data).

I would like to use `formdata-node` with both because I want to use both `got` and Axios and I don't want people reading the code to need to notice that there's two different libraries used for `FormData`. Also `formdata-node` has a table saying that `form-data`'s `FormData` doesn't have a bunch of methods that the browser's does. I tried using `formdata-node` with Axios

```sh
cd /tmp
mkdir axios-form-test
cd axios-form-test
npm init -y
npm install axios
npm install formdata-node
node
```

```js
const axios = require('axios');
const { FormData } = require('formdata-node');

const form = new FormData();
form.append('my_field', 'my value');
form.append('my_other_field', 'my second value');

axios.post('http://localhost:8888', form)
```

and got an error

```none
Uncaught:
Error: Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream
    at createError (/private/tmp/axios-test/node_modules/axios/lib/core/createError.js:16:15)
    at dispatchHttpRequest (/private/tmp/axios-test/node_modules/axios/lib/adapters/http.js:98:23)
    at new Promise (<anonymous>)
    at httpAdapter (/private/tmp/axios-test/node_modules/axios/lib/adapters/http.js:48:10)
    at dispatchRequest (/private/tmp/axios-test/node_modules/axios/lib/core/dispatchRequest.js:58:10)
    at Axios.request (/private/tmp/axios-test/node_modules/axios/lib/core/Axios.js:108:15)
    at Axios.<computed> [as post] (/private/tmp/axios-test/node_modules/axios/lib/core/Axios.js:140:17)
    at Function.wrap [as post] (/private/tmp/axios-test/node_modules/axios/lib/helpers/bind.js:9:15) {
  config: { [...]
```
lib/helpers/toFormData.js
if (!path) return key;
  return path.concat(key).map(function each(token, i) {
    
    token = removeBrackets(token);
    return !dots && i ? '[' + token + ']' : token;
  }).join(dots ? '.' : '');
}
/**
 * If the array is an array and none of its elements are visitable, then it's a flat array.
 *
 * @param {Array<any>} arr - The array to check
 *
 * @returns {boolean}
 */
function isFlatArray(arr) {
  return utils.isArray(arr) && !arr.some(isVisitable);
}
const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {
  return /^is[A-Z]/.test(prop);
});
/**
 * If the thing is a FormData object, return true, otherwise return false.
 *
 * @param {unknown} thing - The thing to check.
 *
 * @returns {boolean}
 */
function isSpecCompliant(thing) {