There are two important simplifications compared to the specification:
The handling of useCapture in addEventListener and
removeEventListener. There is no real capture model.
The handling of stopPropagation and preventDefault on dispatchEvent.
There is no event target hierarchy. When a listener calls
stopPropagation or preventDefault on an event object, it means that no
more listeners after this one will be called. Same as when the listener