Separate async message queue instead of base class, since dispatching is a composable behavior