Pass subscription data through to callback.
Promises.

Switch to using promises to remove simplify the error handling and
control flow.
Avoid passing hub around between modules.