WithTimeout/WithDeadline создают timerCtx с таймером из time.AfterFunc (или подобным). По срабатыванию таймера вызывается cancel. Контекст отменяется, Done() закрывается. Таймер останавливается при явном вызове cancel или при отмене родителя.