然而并不是完全是这样。
golang 的 request.ctx 确实会被用于整个 roundtrip 生命周期。但在 ctx 传入 getConn() 并将要传入对应的 dialer 前,标准库会从 request.ctx 派生出一个 dialctx,这个 dailCtx 用 context.WithoutCancel() 屏蔽掉了 request.ctx 的 cancel 信号。
golang 的 request.ctx 确实会被用于整个 roundtrip 生命周期。但在 ctx 传入 getConn() 并将要传入对应的 dialer 前,标准库会从 request.ctx 派生出一个 dialctx,这个 dailCtx 用 context.WithoutCancel() 屏蔽掉了 request.ctx 的 cancel 信号。