ensure firing goes back to false if any callback throws