This is a bug. The timeout feature was designed to catch runaway
tests that would otherwise run forever, so the timeout for any one
call to wait() was expected to be longer than the entire running time
of its test case. AsyncTestCase.wait should save the timeout handle
it creates and cancel it before returning.
-Ben