@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);
  }