GameplayAbility replication policy problem

I need to perform some logic in GameplayAbility if owning actor is destroyed while the ability is active.

The problem is that binding to OwningActor’s OnDestroyed delegate doesn’t work on owning client if ReplicationPolicy is set to “Replicate”, but works if it is set to “Do Not Replicate”. Even if Net Execution Policy is Local Only. It just never fires off.

I looked through source code and found that UAbilitySystemComponent cancels all abilities on destruction but it sends a client RPC that never arrives because the connection is already gone, which is understandable. However, I don’t get why binding to OnDestroyed delegate doesn’t work. Isn’t it completely unrelated to ability replication policy?

How do I know when owning actor is destroyed on owning client machine if both binding to delegate and OnEndAbility don’t work?

ability2.png
ability3.png

Maybe it’s because when the Owner destroys, the GAS has already been destroyed and the skill will be removed.