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

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.