@Override
  public <U> ParSeqBasedCompletionStage<U> thenApply(Function<? super T, ? extends U> fn)
  {
    return nextStageByComposingTask(_task.map("thenApply", fn::apply));
  }
@Test
  public void testThenApply_unFinish() throws Exception
  {
    CountDownLatch waitLatch = new CountDownLatch(1);
    CompletionStage<String> stage2 = createTestStage(TESTVALUE1, 200).thenApply(v -> {
      waitLatch.countDown();
      return TESTVALUE2;
    });
    assertFalse(waitLatch.await(100, TimeUnit.MILLISECONDS));
    finish(stage2);
    assertTrue(waitLatch.await(100, TimeUnit.MILLISECONDS));
  }