Instead of returning a standard CompletableFuture for an async call, consider returning a customized Future instance, for example, DubboFuture extends CompletableFuture, so that we can override the default behaviors of the Future, for example, cancel, get and so on.
What do you think?