> In some cases it might make sense to raise if asked to sleep with no timers (or perhaps block indefinitely)

I can't imagine this would ever be useful behaviour. Can you give a concrete case?

If you want to raise an exception, write the code like follows at the start of `#wait`.

    raise TimerError.new("No times") if @timers.empty?

If you block indefinitely, wouldn't that be a deadlock?