#### Describe the bug

Axios throws an error instead of canceling all requests when I try to cancel multiple requests just after sending them.
![Ankor 2021-11-12 at 16 33 51](https://user-images.githubusercontent.com/11693557/141483600-e09a1488-d176-4b58-a05c-1d7bed27fbf6.png)

#### To Reproduce
[Code snippet to reproduce on npm.runkit.com](https://runkit.com/korniychuk/618e792c131c100008191c5e)

```js
var axios = require("axios");

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

const promises = Array(5).fill(1).map((v, i) =>
  axios.get('https://www.google.com', { cancelToken: source.token })
       .catch(e => axios.isCancel(e) && console.log(`Req ${ i } is cancelled ${ e && e.message }`))
);

source.cancel('Aborted by user');

await Promise.all(promises);
console.log('Done');
```

#### Expected behavior

Should cancel all requests without throwing an error.

#### Environment
 - Axios Version [0.24.0]
 - Adapter [default maybe, I don't know]
 - Browser [NA]
 - Browser Version [NA]
 - Node.js Version [16.13]
 - OS: [*]
 - Additional Library Versions [no libraries]

#### Additional context/Screenshots

I've described the issue with the screenshot.
![Ankor 2021-11-12 at 16 27 48@2x](https://user-images.githubusercontent.com/11693557/141483305-7b254175-fc32-4280-b98a-125ebc70897c.png)

#### Solution

<img width="1238" alt="Ankor 2021-11-12 at 16 43 30@2x" src="https://user-images.githubusercontent.com/11693557/141485034-667c62cf-5084-4c27-812b-9108e3c1d8cb.png">

```js
  this.promise.then(function(cancel) {
    if (!token._listeners) return;

    var i;
    var l = token._listeners.length;

    /** We have to clone it to avoid a race condition with .unsubscribe() method */
    var clonedListenersArr = token._listeners.concat();
    for (i = 0; i < l; i++) {
      clonedListenersArr[i](cancel);
    }
    token._listeners = null;
  });
```

Maybe someone has time to create a simple PR. It would be great.
test/unit/adapters/http.js
});
      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 timeout 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
      }).then(function (res) {
        success = true;
      }).catch(function (err) {
        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');