make cancel() and preempt() events always valid (#18)