public <T> void compareSupplierResultAsync(final T expected, final Supplier<T> experimentSupplier, final Executor executor) {
    final Timer.Sample sample = Timer.start();

    try {
      compareFutureResult(expected, CompletableFuture.supplyAsync(experimentSupplier, executor));
    } catch (final Exception e) {
      recordError(e, sample);
    }
  }
@Test
  void compareSupplierResultAsyncRejection() {
    final ExecutorService executorService = mock(ExecutorService.class);
    doThrow(new RejectedExecutionException()).when(executorService).execute(any(Runnable.class));

    experiment.compareSupplierResultAsync(12, () -> 12, executorService);
    verify(errorTimer).record(anyLong(), eq(TimeUnit.NANOSECONDS));
  }