Ditch timeouts for sync tasks.

Each call to timeout method creates a new thread and executes the block
on that thread. This is unneccessary because async tasks already execute
on a thread pool thread and handle timeouts and sync tasks are not
interrupted when timeout elapses anyway. One should not use a sync task
for a long running task.