Returning false as a signal a listener cancelled the event makes code difficult to understand. You must explicitly check for false, not just a falsey return value. Consider a more verbose return value like {cancelled: true/false}, and perhaps other details as needed.