Tôi đã có thể giải quyết vấn đề.
Không có vấn đề với mã dưới đây
await session.commitTransaction(); (success)
session.endSession(); (failure)
} catch (error) { (entered)
await session.abortTransaction(); (invoked)
nhưng đó là với vòng lặp record.forEach.
records.forEach(async (el: any) => {...});
bên trong foreach khi gặp lỗi, nó không bị khối try catch ngoài cùng bắt vì nội dung bên trong vòng lặp nằm trong ngữ cảnh chức năng khác với mã bên ngoài vòng lặp.
Sau khi tôi thay đổi vòng lặp từ .forEach
đến
for (const el of records) {}
nó hoạt động như mong đợi. Đăng câu trả lời trong trường hợp nếu ai đó phải đối mặt với điều tương tự trong tương lai. Cảm ơn các bạn đã ủng hộ :)