public void awaitSuccessfulCompletion() throws InterruptedException, ExecutionException {
        awaitUninterruptibly();
        for (final Future<?> f : futures) {
            f.get();
        }
    }
@Test
    public void failsWhenAnyCallableThrowsException() throws Exception {
        StatusEnsuringCallable firstTask = new StatusEnsuringCallable(false);
        StatusEnsuringCallable secondTask = new StatusEnsuringCallable(false);

        subject.submit(firstTask);
        subject.submit(secondTask);

        try {
            subject.awaitSuccessfulCompletion();
            fail("Should fail");
        } catch (final Exception e) {
        }
    }