Hi,
Doing with two fsm should get rid of the need to fire events every frame. This is something I never do actually.
not trying to get away from the problem, but this is not really a good practive in my opinion to send events every frame, instead prefer sending two events, one when the behavior starts and one when it ends ( what ever it is). to take a generic example, draggin should not fire an event every frame, instead it should fire an event when dragging starts and en event when dragging ends, this is much much better and clean. any fsm interested in dragging simply implement these two events and done, they can do very complex fsm in peace without getting constantly that dragging event which likely breaks asynchronous fsm logic, like in your case.
bye,
Jean