changed asynchronous protocol methods to return ListenableFuture instead of Future