move message heartbeating outside of the worker, so it can actually work