@SafeVarargs public final <Result,Progress>Promise<Result,Progress> sequentiallyUntilFirstDone(final Task<Result,Progress>... tasks){
  return sequentiallyUntilFirstDone(Arrays.asList(tasks));
}

@ SafeVarargs public final < Result , Progress > Promise < Result , Progress > sequentiallyUntilFirstDone ( final Task < Result , Progress > ... tasks ) { return sequentiallyUntilFirstDone ( Arrays . asList ( tasks ) ) ; }
creates a new promise that will be resolved with the result of the first task which completes correctly . task will execute sequentially until the first one is resolved . if all the promises fail promise will be rejected with the last exception thrown . in case the collection of tasks is empty the promise will be rejected with an emptytasksexception .
