In native Unity script, MonoBehaviour.Invoke() can cancel by MonoBehaviour.CancelInvoke().
I wondered why SendCustomEventDelayed/Frames can not.