-deliverOnMainThread redux

Building upon @jlawton's work in #1425.

**To do:**

 - [x] Unit tests