Alternatively, the message management code could use progress notifications in Q: https://github.com/kriskowal/q#progress-notification

Not really sure what the advantage to that approach would be though, over just using plain ol' callbacks. I guess the main advantage would be that multiple parties could share the same deferred, and get the same progress notifications. 

I wonder if progress handlers get executed async. Probably.