O problema que você está tendo vem desta linha:
await client.close();
Dos documentos:
Significado quando você
close
no cliente, todas as outras conexões abertas também fecham. No seu caso, #2 e #4 começam a ser executados logo após #1 e #3 (mas antes de terminarem), e você fecha a conexão enquanto ainda estão em execução. Também dos documentos:
Seria uma prática recomendada ter algum gerenciamento de estado para suas funções sem estado (eu sei), ter um serviço de conexão que apenas fornecesse a conexão às suas funções sem estado, também seria mais fácil gerenciar erros dessa maneira.
Leia mais sobre isso aqui e nos documentos do driver nodejs
Uma solução rápida (e muito abaixo do ideal) para o seu problema seria definir a conexão dentro da função assim:
// 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();
};