Always cancel timer when we're done, even if an exception is thrown. Closes #540