I could imagine something like this alright ... that send(we_want_a_reply=True) would return a handle on that we could poll on

We could potentially eventually add a user-facing call_async() API with something like this too e.g.

  handle = client.call_async('ping')

  # do stuff

  result = handle.wait_for_result()


But in terms of shared logic out of the drivers .... it's definitely something we should try and do, but I'm a little reluctant to do much of it in case we make it harder to port the drivers. We can refactor once the drivers have been ported.

The one case where I have pulled logic out of the drivers is the executor/dispatcher thing ... but that's just because I want the choice of eventlet to be made by the API user and not down in the driver