Saya dapat menyelesaikan masalah ini.
Masalah bukan dengan kode di bawah ini
await session.commitTransaction(); (success)
session.endSession(); (failure)
} catch (error) { (entered)
await session.abortTransaction(); (invoked)
tapi itu dengan record.forEach loop.
records.forEach(async (el: any) => {...});
di dalam foreach saat melempar kesalahan, itu tidak ditangkap oleh blok try catch terluar karena konten di dalam loop berada dalam konteks fungsional yang berbeda dari kode di luar loop.
Setelah saya mengubah loop dari .forEach
untuk
for (const el of records) {}
itu berfungsi seperti yang diharapkan. Memposting jawaban jika seseorang menghadapi hal yang sama di masa depan. Terima kasih atas dukungannya teman-teman :)