static <T> CompletionStage<T> executeCompletionStageSupplier(Observation observation,
                                                                 Supplier<CompletionStage<T>> supplier) {
        return decorateCompletionStageSupplier(observation, supplier).get();
    }
@Test
    public void shouldExecuteCompletionStageSupplier() throws Throwable {
        given(helloWorldService.returnHelloWorld()).willReturn("Hello world");
        Supplier<CompletionStage<String>> completionStageSupplier =
            () -> CompletableFuture.supplyAsync(helloWorldService::returnHelloWorld);
        CompletionStage<String> stringCompletionStage = Observations
            .executeCompletionStageSupplier(observation, completionStageSupplier);

        String value = stringCompletionStage.toCompletableFuture().get();
        assertThat(value).isEqualTo("Hello world");
        await().atMost(1, SECONDS)
            .until(() -> {
                assertThatObservationWasStartedAndFinishedWithoutErrors();
            });
        then(helloWorldService).should(times(1)).returnHelloWorld();
    }