Slipped timeouts always get rescheduled with a nonzero delay, so they never get put back in the same tick bucket.  That is, the slippage may cause them to be delayed by one tick, but never by an entire revolution of the wheel.  So I think this fix is valid, and our testing bears out that it solves the problem.  Though whether you want to bite the bullet and rewrite the HashedWheelTImeout in scala is a larger project decision.