@Override
  public <U> ParSeqBasedCompletionStage<Void> thenAcceptBoth(CompletionStage<? extends U> other,
      BiConsumer<? super T, ? super U> action)
  {
    Task<U> that = getOrGenerateTaskFromStage(other);
    return nextStageByComposingTask(
        Task.par(_task, that).flatMap("thenAcceptBoth", (t, u) -> Task.action(() -> action.accept(t, u))));
  }
@Test public void testThenAcceptBoth() throws Exception {
    CompletionStage<String> completionStage1 = createTestStage(TESTVALUE1);
    CompletionStage<String> completionStage2 = createTestStage(TESTVALUE2);

    BiConsumer<String, String> consumer = mock(BiConsumer.class);
    finish(completionStage1.thenAcceptBoth(completionStage2, consumer));
    verify(consumer).accept(TESTVALUE1, TESTVALUE2);
  }