There are problems with both of those first approaches:

1. Assertions may be disabled, so we can't rely on those to terminate the program. I'm actually not even sure if we do want a race condition to result in termination.
1. Retrying is valid for the case where the target method has spontaneously appeared, but failing to add the alias is bizarre.

Honestly, I think I'm just gonna return error signals, and let callers handle that how they choose.