@Test
  public void testNoStackOverflowErrorWithImmediateEventExecutorB() throws Exception {
    final Promise<Void>[] p = new DefaultPromise[128];
    for (int i = 0; i < p.length; i++) {
      final int finalI = i;
      p[i] = new DefaultPromise<Void>(ImmediateEventExecutor.INSTANCE);
      p[i].addListener(
          new FutureListener<Void>() {
            @Override
            public void operationComplete(Future<Void> future) throws Exception {
              DefaultPromise.notifyListener(
                  ImmediateEventExecutor.INSTANCE,
                  future,
                  new FutureListener<Void>() {
                    @Override
                    public void operationComplete(Future<Void> future) throws Exception {
                      if (finalI + 1 < p.length) {
                        p[finalI + 1].setSuccess(null);
                      }
                    }
                  });
            }
          });
    }

    p[0].setSuccess(null);

    for (Promise<Void> a : p) {
      assertThat(a.isSuccess(), is(true));
    }
  }