# Which listener's exception reaches the caller, and whether the order row survives --- plain listener throws --- caller saw: IllegalStateException: plain listener failed order row survived: false --- beforeCommit listener throws --- caller saw: IllegalStateException: BEFORE_COMMIT listener failed order row survived: false --- afterCommit listener throws --- caller saw: nothing order row survived: true logged: TransactionSynchronization.afterCompletion threw exception logged: java.lang.IllegalStateException: AFTER_COMMIT listener failed