@Test public void forEachWithEvents() { List<Integer> list = new ArrayList<>(); assertFalse(complete); assertThat(error, nullValue()); LazyFutureStream<Integer> stream = LazyFutureStream.of( () -> 1, () -> 2, () -> 3, (Supplier<Integer>) () -> { throw new RuntimeException(); }) .map(Supplier::get); stream.forEachEvent(i -> list.add(i), e -> error = e, () -> complete = true); assertThat(list, hasItems(1, 2, 3)); assertThat(list.size(), equalTo(3)); assertThat(error, instanceOf(RuntimeException.class)); assertTrue(complete); }