I\'d like to make a request to X different web services who will each return either true or false.
These tasks should be executed in parall
You can simply use Task.WhenAny and a predicate multiple times until the "right" task comes along
async Task WhenAny(IEnumerable> tasks, Func predicate)
{
var taskList = tasks.ToList();
Task completedTask = null;
do
{
completedTask = await Task.WhenAny(taskList);
taskList.Remove(completedTask);
} while (!predicate(await completedTask) && taskList.Any());
return completedTask == null ? default(T) : await completedTask;
}