package neterror import ( "errors" "net" "strings" ) const responseHeaderTimeoutMarker = "timeout awaiting response headers" // IsResponseHeaderTimeout identifies the HTTP/1.1 and HTTP/2 timeout values // returned by the Go transport while waiting for the first response headers. func IsResponseHeaderTimeout(err error) bool { if err == nil { return false } var networkError net.Error if !errors.As(err, &networkError) || !networkError.Timeout() { return false } return strings.Contains(strings.ToLower(err.Error()), responseHeaderTimeoutMarker) }