Fix: no event races anymore - event firing is divided into 3 phases, which allows to identify redundant ones