Wait for the single Future or coroutine to complete, with timeout.
Returns result of the Future or coroutine. When a timeout occurs,
it cancels fut and raises TimeoutError. To prevent fut from being
cancelled, wrap it in shield().
If the wait is cancelled, fut is also cancelled.
If fut suppresses the cancellation and returns a value instead,
that value is returned.
This function is a coroutine.