Quick answer: Godot 4 C# Task.WhenAll throwing on a single task failure, masking other task completions? WhenAll waits for all; uses AggregateException - catch and inspect.
Batch of 10 async loads; one fails; exception thrown; other 9 results lost.
Catch AggregateException
try {{ await Task.WhenAll(tasks); }}
catch (AggregateException ex) {{ inspect each }}Inspect each inner exception; partial success possible.
Or use ContinueWith
Per-task continuation. Each handles its own failure; aggregate decides what to do with successes.
Don't fail-fast
For batch loads, partial success often preferred. Design for it.
“WhenAll is fail-fast. Aggregate exceptions are the recovery surface.”
If your project does batch async work, the AggregateException pattern is mandatory. Document.