Quick answer: Unreal Blueprint async action's OnCancel output pin not executing when canceled within the same tick as start? Async actions evaluate Activate before checking cancellation - bridge with a 1-tick delay.
Player triggers a quick-cancel sequence: start the async action, immediately cancel. OnCancel doesn't fire; the action proceeds.
Defer cancel checks
In Activate, schedule a deferred check via Timer. If state changes before the timer, OnCancel fires correctly.
Or use a single OnComplete pin
Combine success/cancel into one pin with a status arg. Simpler graph; no race condition between pins.
Verify with stress test
Bind start and cancel to the same key. Mash; the action should always end in one of the documented states.
“Async actions have pin ordering. Same-tick cancellation hits the order boundary.”
For asynchronous UI, prefer Latent functions over Async actions. Latent semantics are simpler; bugs are easier to spot.