Twój problem pochodzi z tej linii:
await client.close();
Z dokumentów:
Znaczenie, gdy close
klienta, wszystkie inne otwarte połączenia również zamykają się. W twoim przypadku #2 i #4 zaczynają działać krótko po #1 i #3 (ale zanim skończą), a ty zamykasz połączenie z nimi, gdy wciąż są uruchomione.
Również z dokumentów:
Najlepszą praktyką byłoby posiadanie pewnego zarządzania stanami dla funkcji bezstanowych (wiem), posiadanie usługi połączeń, która po prostu zapewnia połączenie z funkcjami bezstanowymi, łatwiej byłoby również zarządzać błędami w ten sposób.
Przeczytaj więcej o tym tutaj oraz w dokumentacji sterownika Nodejs
Szybkim (i bardzo nieoptymalnym) rozwiązaniem Twojego problemu byłoby zdefiniowanie połączenia w funkcji w następujący sposób:
// remove the definition from here
export default async (req, res) => {
// and move it here
const client = new MongoClient(process.env.DB_URI, {});
await client.connect();
.....
await client.close();
};