Just found that even onDeath can be missed, via either calling execute before it's fired (via experiment result) or skipping turns (guess, but I'm pretty sure).
And when onDeath event is missed, SYSTEM: *** has dead will also be missed.
SYSTEM: *** has dead