Pros and cons of the asynchronous messaging design pattern