class ParallelJobsFuture implements JobFuture {

    @Override
    public CompletableFuture<Void> waitAsync() {
        Stream<CompletableFuture> futures =
            jobs
                .map(JobFuture::waitAsync)
                .map(curFuture -> curFuture.exceptionally(this::collectErrors));

        return
            CompletableFuture
                .allOf(array(futures))
                .thenApply(this::throwSummaryExceptionIfNeeded);
    }

    public  ParallelJobsFuture(JobFuture... jobs);
    public  ParallelJobsFuture(List<JobFuture> jobs);
    public  ParallelJobsFuture(List<JobInfo> jobInfoList, QueueClient queueClient);

}