before it would always get the quit message sent correctly, or was that just luck?
Yes, it is luck. It depends entirely on the network state. If Windows is able to send the message immediately, it does. If there is a network delay for whatever reason, it does not. The same happened with the old /disconnect method, where mIRC would close the socket immediately. Sometimes the server would receive the QUIT message, sometimes it would not. Even with the new method, where mIRC keeps the socket open in the background for a few seconds, this may not resolve the issue since it may take more than a few seconds for the message to be received by the server depending on the network state.
I think that /exit should do a clean quit (/quit), first because it was the behavior for year
When exiting, either through using /exit or Exit through the menu, mIRC has always sent QUIT and exited immediately.
(or so it seems, again I don't recall /exit ever ending up with QUIT messages not sent properly)
This has always been the case.
What you are requesting is: if mIRC has server connections open and you try to exit mIRC, you want mIRC to not exit immediately but instead to remain open, freeze the GUI to prevent further input, and wait for confirmations from all open server connections that they have received your QUIT message. Note that this could take anything from a second to several minutes, depending on the network state, server lag, and so on. I could make it so that mIRC only remains open for five seconds at most, however that is still no guarantee that the server will receive the message.