Gain with any messaging system is decoupling, so it makes sense to use it even if you make synchronous calls.
But in multithreading scenarios, you need full fledged thread safe system capable of posting messages to a queue. In other words, asynchronous messaging. Anything else is just a crutch that can be used only in most simple scenarios.