Implementing Async Timeouts with CompletableFuture
coderoasis.com