Jacek Caban (@jacek) commented about dlls/mshtml/xmlhttprequest.c:
+ + if((thread_data = get_thread_data(FALSE))) + blocking_depth = thread_data->blocking_depth;
hres = create_event_from_nsevent(nsevent, dispex_compat_mode(&This->xhr->event_target.dispex), &event); - if(SUCCEEDED(hres) ){ - dispatch_event(&This->xhr->event_target, event); - IDOMEvent_Release(&event->IDOMEvent_iface); + if(FAILED(hres)) { + if(!blocking_depth || This->xhr->synchronous) + This->xhr->ready_state = ready_state; + return NS_ERROR_OUT_OF_MEMORY; } + + if(blocking_depth) { + if(!This->xhr->synchronous) { The way it's implemented, nested sync XHR will not block other sync XHR's events, is it intentional?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/2098#note_25398