public Future<Void> executeFunction(final Supplier<Void> f) {
    return executor.submit(f::get);
  }
@Test
  public void testSupplierFails() throws Exception {
    ExecutorServiceFuturePool futurePool =
        new ExecutorServiceFuturePool(executorService);
    Future<Void> future = futurePool.executeFunction(() -> {
      throw new IllegalStateException("deliberate");
    });
    interceptFuture(IllegalStateException.class, "deliberate", 30,
        TimeUnit.SECONDS, future);
  }