I totally think it is worth looking into if the problem always occurs with your timer and never with others.
It is a good habit to get into (builds resilience and it sounds like a bug, not unneccessary optimization).
Usually the way to track down that kind of problem is enclosing code with time1 and time2 ... subtracting time1 from time2 and logging the result (always or when the time is unusual).
Guess a sophisticated profiling solution like the one from the enginuity articles might be a nice thing to have/use: http://archive.gamedev.net/archive/reference/programming/features/enginuity3/index.html
But more simple solutions should help as well. You might be able to narrow it down. It might turn out that it is actually the update or render function for some reason ... or something in wait() that is out of your control. Then you can move on with a different timer and a good feeling.