private void Waiter_OnCancel(Waiter<bool> w) { bool spinTaken = false; try { spinner.Enter(ref spinTaken); waiters.Remove(w); } finally { if (spinTaken) spinner.Exit(false); } w.Completed(false); }