    @Test
    public void should_wait_until_woken() throws ExecutionException, InterruptedException {

        Waiter waiter = new Waiter(Duration.ofMillis(1000));
        Future<Long> waitTime = executor.submit(new WaitForWaiter(waiter));
        sleep(20); // give executor time to get to wait(..)

        waiter.wake();
        assertTrue(waitTime.get() < 100L, "Waited: " + waitTime.get());

        Future<Long> waitTime2 = executor.submit(new WaitForWaiter(waiter));
        sleep(20); // give executor time to get to wait(..)

        waiter.wake();
        assertTrue(waitTime2.get() < 100L, "Waited: " + waitTime2.get());
    }