For the image load event patch, wine-gecko always sends them asynchronously, which is the same behavior as IE9+ modes. See `dom/base/nsImageLoadingContent.cpp: nsImageLoadingContent::FireEvent`. The comment there, funnily enough, is what script56.chm's script protects against (and breaks because of async behavior), but there's no way to selectively override it (because of compat mode), so we have to workaround it on mshtml side.
Note that we only hook the gecko events (nsevents) being dispatched, and that's obviously on purpose. We wouldn't want to skip a load event dispatched by some script or app's code.