I'm documenting a potential bug here while I haven't yet created a reproducible repository.
getListeners() doesn't unsubscribe upon navigation. Returning to the page creates a duplicate subscription, causing listeners to fire multiple times per event and preventing the leave event from being triggered.