Collapse async and blocking into a single client.
Motivation: downstream consumers should only have to import one client and then use the appropriate method for their call. We should not need to distinguish between blocking and async clients in manners besides method.