But if a connection receives 408as a response to the request, no retry is held and that connection doesn't get discarded. So the client of *http.Transport sees 408 response repeatedly until that connection actually gets closed from the server.
Two open questions:
Is it the client(of *http.Transport)'s responsibility to retry the request when it sees 408?
And why *http.Transport doesn't discard connections which got 408?
You can reproduce this situation with the server which responses 408 for requests but doesn't close the connection immediately: