Le problème que vous rencontrez provient de cette ligne :
await client.close();
À partir de la documentation :
Signification lorsque vous close
le client, toutes les autres connexions ouvertes se ferment également. Dans votre cas, #2 et #4 commencent à s'exécuter peu de temps après #1 et #3 (mais avant qu'ils ne soient terminés), et vous fermez la connexion sur eux alors qu'ils sont encore en cours d'exécution.
Également à partir de la documentation :
Ce serait une bonne pratique d'avoir une gestion d'état pour vos fonctions sans état (je sais), avoir un service de connexion qui donne juste la connexion à vos fonctions sans état, il serait également plus facile de gérer les erreurs de cette façon.
En savoir plus à ce sujet ici et dans la documentation du pilote nodejs
Une solution rapide (et très sous-optimale) à votre problème serait de définir la connexion au sein de la fonction comme suit :
// 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();
};