This logic originally lived in the providers, but there wasn't a clean way to specify your own implementation. With RPC for example you have to define your own Consumer and Responder. In contrast it's easy to specify a custom WorkerContext. I agree that the above feels a bit clunky though.