For application facing APIs, we can provide CompletionStage alternatives. For internal usages, we could retain it or phase it out completely.

Comment From: sdeleuze

+1 for phasing it out, that would improve clarity for users to not have too much alternatives, and with CompletionStage and Mono I think we are covered.

Comment From: poutsma

This is now complete: * Deprecation of ListenableFuture and related types (ListenableFutureCallback, SettableListenableFuture, etc.) * Deprecation of AsyncListenableTaskExecutor in favor of default methods in AsyncTaskExecutor (submitCompletable). * AsyncHandlerMethodReturnValueHandler now has toCompletableFuture instead of toListenableFuture. * WebSocketClient now has execute methods, which do the same as doHandshake, but return CompletableFutures (cf. the reactive WebSocketClient).

All other changes: * add an overloaded method that takes a CompletableFuture parameter instead of ListenableFuture, and/or * add a method with a 'Async' suffix that returns a CompletableFuture instead of a ListenableFuture (connectAsync, sendAsync).