If you send a message and call unload from the same chunk of code or in the same scope then I believe the message will have time to process. You should be able to test this yourself.
Indeed I have asked since it seems to me that sometimes the message is not processed. So, since you are confirming that it is not guaranteed to be so, I will try a different logic.
My conclusion was based ONLY on a bug which could be explained by the message not being processed. I have moved the code processing “closing_” to the final method and the bug seems fixed.
For the moment I am going to reintroduce the old logic and try a simple print on that message.