Конкретно с http2 я ловил кейс, когда
1) запрос уже выполнился и сервак его обработал
2) net/http отчитался, что запрос не выолнил, потому что сдох контекст
Если детально интересно, то проблема кроется здесь, здесь нигде до записи нет преждевременной проверки на context.Done, а в go в select нет гарантии очередности выполнения, в итоге на _уже_ дохлом контекте может начинаться запись body
https://github.com/golang/go/blob/212d385a2f723a8dd5e7d2e83efb478ddd139349/src/net/http/h2_bundle.go#L7677Как короткий итог вышесказанного - вы контекст-то передавайте. Но имейте ввиду, что вам никто не гарантирует, что запрос не выполнится, только лишь гарантия, что когда-то на след цикле он все же отменится