There is no next iteration because there's only one timeout, which would have already occurred, so the retry after collision code shouldn't try to wait again, otherwise you'd be doubling the timeout, and then tripling and so on. This code is heavily based on the old select code.