Quick answer: Godot 4 C# CancellationToken from tree-exit not propagating to nested tasks? Each task needs its own cancellation; pass token through the call chain.

Top-level task receives token; nested LoadAsync continues; orphan work.

Pass token through

await LoadAsync(path, cancellationToken);

Explicit chain. Each level checks.

Or use linked token

Per-task linked CancellationToken. One source; many tokens.

Audit cancellation chains

Each async call's token. Missing token = orphan work.

“Cancellation needs explicit propagation. Implicit doesn't exist.”

Build the token propagation as a project convention. Easier than chasing leaks.

Related reading