非同期asyncについて質問したい

複数の非同期関数を同時に実行して結果を受け取る
そのタスクのうち1つでも結果がfalseならば他のタスクを全て中断としたい

WhenAllでは全ての結果を待つので無駄な場合がある

WhenAnyでは最初に終わったタスク結果は受け取れるだけである

この場合どうしたら良いのだろう?