Adapt the asynchronous return value to a ListenableFuture.
Implementations should consider returning an instance of
SettableListenableFuture. Return value handling will then continue when
the ListenableFuture is completed with either success or error.