주문 생성되면 후처리(알림 발송, 통계 갱신 등)를 이벤트로 느슨하게 붙이려고 EventEmitter를 쓰고 있어요. 리스너 안에서 await 할 게 있어서 async 함수로 등록했습니다.
orderEvents.on('created', async (order) => {
await sendNotification(order) // 여기서 reject되면?
await updateStats(order)
})
orderEvents.emit('created', order)문제는 리스너 안에서 에러가 나면 어떤 땐 그냥 조용히 묻혀서 알림이 안 갔는데도 아무 로그가 없고, 어떤 땐 unhandledRejection으로 프로세스가 죽습니다. emit 하는 쪽에서 try/catch로 감싸도 안 잡히고요. 이벤트 기반으로 짜면 안 되는 건가요?
댓글 0