I’m not sure about the event loop question because we didn’t get to that point.
The difficulty we had with ports was that there was no way to associate the message coming back into the Elm app with the user input that triggered the window.confirm.
We could have tried generating a unique ID to send back with the boolean result of the dialog, but that felt like a lot of complex harness for a problem that could be safely solved with three lines of native code.