simplify async vs sync pub/sub code-paths