Why do my mocha tests appear to be running synchronously?

I am trying to ping a number of websites for a health check, if I just wanted to to use Promise.all and map I could just do this:

const responses = await Promise.all(links.map((link) => fetch(link));
// check all the responses somehow

This works very quickly and I can then do something with the responses when they are finished, in mocha I am using it programmatically and adding the tests like this:

 import Mocha from "mocha";     
 const Test = Mocha.Test;
 const mocha = new Mocha();

 const suite = Mocha.Suite.create(mocha.suite, "Check Websites Health");

 links.forEach((link) => {
        const test = new Test(`Check ${link}`, async function () {
            const response = await fetch(link);
            //do something with response
        );
        suite.addTest(test);
    });
    suite.run();

This goes much much slower and seems to wait for the previous test before moving onto the next one, is there some option, or some major thing that I am missing? I would think that these tests wouldn't need to wait.

I know that I could initialize the promises before hand, and then check the results, but I don't think this should be necessary, and I lose out on how long the responses took in the duration.