Getting rid of #ifdef shenanigans with timed blocking calls. The timer overheads (constructors, etc.) are pretty heavy in the no-timeout case, and the code is hard to read. This might be a bit bigger, but it's easy to understand, faster, and cleaner.