J'ai pu résoudre le problème.
Le problème n'était pas avec le code ci-dessous
await session.commitTransaction(); (success)
session.endSession(); (failure)
} catch (error) { (entered)
await session.abortTransaction(); (invoked)
mais c'était avec la boucle records.forEach.
records.forEach(async (el: any) => {...});
à l'intérieur du foreach lors de la génération d'une erreur, il n'est pas intercepté par le bloc try catch le plus à l'extérieur puisque le contenu à l'intérieur de la boucle est dans un contexte fonctionnel différent de celui du code à l'extérieur de la boucle.
Une fois que j'ai changé la boucle de .forEach
à
for (const el of records) {}
cela fonctionne comme prévu. Publier la réponse au cas où quelqu'un ferait face à la même chose à l'avenir. Merci pour le soutien les gars :)