title: Task.WhenAny for non faulted tasks
body: <p>The description of the <code>Task.WhenAny</code> method says, that it will return the first task finished, even if it's faulted. Is there a way to change this behavior, so it would return first successful task? </p>