PR for review.

I think I am going to leave this as is.  I can't think of a case where it is not going to work properly, and I reckon there are also potential problems with the `if (!timer)` thing in much the same way, and similar levels of badness (e.g we always set the timer...).  So just going with the flow.  Time will tell!