Jeg var i stand til at løse problemet.
Problemet var ikke med nedenstående kode
await session.commitTransaction(); (success)
session.endSession(); (failure)
} catch (error) { (entered)
await session.abortTransaction(); (invoked)
men det var med records.forEach loop.
records.forEach(async (el: any) => {...});
inde i foreachen, når du kaster en fejl, fanges den ikke af den yderste try catch-blok, da indholdet inde i løkken er i en anden funktionel kontekst end koden uden for løkken.
En gang ændrede jeg løkken fra .forEach
til
for (const el of records) {}
det fungerer som forventet. Sender svaret i tilfælde af, at nogen står over for det samme i fremtiden. Tak for støtten gutter :)