Properly drain the timer channel
Relates to #386 (closed).
The timer might have fired just before we called Stop()
and hence will trigger the <-t.C
case on the next iteration. This is not the desired behavior.
Also, change code to reset the timer rather than create a new one each time to save GC some work.
Edited by Mikhail Mazurskiy