Define dummy client.
Instantiate dummy client when the protocol is :dummy.
Stop abusing :host, use :callback instead.
Write unit test to make sure that the new setup works.
Test to cover the empty callback scenario.