@Override
  public void addListener(final PromiseListener<T> listener) {
    _delegate.addListener(listener);
  }
@Test
  public void testAddListener() throws InterruptedException {
    final SettablePromise<String> delegate = Promises.settable();
    final Promise<String> promise = new DelegatingPromise<String>(delegate);

    final String value = "value";
    final CountDownLatch cdl = new CountDownLatch(1);
    promise.addListener(new PromiseListener<String>() {
      @Override
      public void onResolved(Promise<String> resolvedPromise) {
        cdl.countDown();
      }
    });

    delegate.done(value);
    assertTrue(cdl.await(20, TimeUnit.MILLISECONDS));
    assertEquals(value, promise.get());
  }