public static <T> void propagateAsync(CompletableFuture<T> source, CompletableFuture<T> dest,
        ExecutorService executor) {
        source.whenCompleteAsync((rst, ex) -> {
            if (ex != null) {
                dest.completeExceptionally(ex);
            } else {
                dest.complete(rst);
            }
        }, executor);
    }
Propagate CompleteFuture result / error from source to dest.
s3stream/src/main/java/com/automq/stream/utils/FutureUtil.java