Fix issue #37 by covering an edge case

It's possible timer fired to interplay poorly with cancelling the timer, and this should fix that problem. It may be worth reviewing all completion locations to ensure that a similar problem is not present there.

Test case generated based on arkadiyt's report in #37

All tests pass locally.