public void hasResult(final @NonNull T value) {
        this.result().hasValue(value);
        this.failure().isEmpty();
    }
Subject for assertions about completable futures. Futures are join()ed to get
results or exceptions, and {@link CompletionException}'s cause is unwrapped to
{@link #failure()}. Any other exceptions thrown by join() are unexpected failures.
This class also does not properly handle futures where null is a successful result.

@param <T> future result type
cloud-core/src/test/java/org/incendo/cloud/truth/CompletableFutureSubject.java