There is no mechanism to prevent handlers from removing other event handlers (or all event handlers). When iterating in any order on the current `eventHandlers` array, it causes another event handler to be skipped or fired twice, or even throw an error.

Perhaps, I should rename this commit to make this clearer that this prevents errors or unwanted behavior that arise from modifications to the eventHandlers array during execution of the event handlers.

Example:

`eventHandlers = [hdl1, hdl2, hdl3]`
`hdl3` removes `hdl2`

Execution:
`i = 2, eventHandlers = [hdl1, hdl2, hdl3]`, `hdl3` is called. Then, `hdl2` is removed.
`i = 1, eventHandlers = [hdl1, hdl3]`, `hdl3` is called.
`i = 0, eventHandlers = [hdl1, hdl3]`, `hdl1` is called.

`hdl3` is called twice. `hdl2` doesn't get called on this event at all. While this maybe intended for `hdl2`, I don't think users should be relying on such behavior. That's perhaps why jQuery is duplicating the array first as well (https://github.com/jquery/jquery/blob/master/src/event.js).