A timeout is not a signal and not a thread. It is a future that polls two things and returns whichever finishes first:
loop {
if let Poll::Ready(v) = poll(&mut work) { return v; }
if let Poll::Ready(v) = poll(&mut deadline) { return v; }
}
That is select!, and timeout(d, fut) is the special case where one side is a timer. Nothing is interrupted — the loser is simply dropped, which by the previous lesson is exactly what cancellation is.
