DNS round robin not working

I want to setup a PyPI Cloud service with two servers in different data centers and leverage DNS round robin as failover mechanic (see [here](https://github.com/pypa/pip/issues/10185)). To do that, I have configured a multi-value DNS record:
```
$ dig +short pypi-dev.company.de
172.31.33.222
172.31.19.77
```

In the ticket linked above, @uranusjr points out that the requests library should take care of DNS round robin (see [here](https://github.com/psf/requests/issues/2537)) and that I might have configured my setup incorrectly. To reproduce that, I shut down the application server on 172.31.33.222 and kept the reverse proxy alive. On 172.31.19.77 both application server and reverse proxy are operational.

Furthermore, I created this script to retrieve the list of available python packages on my PyPI Cloud service:

```
import requests
import logging
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter


def get_session(retries=3):
    s = requests.Session()
    retry = Retry(
        total=retries,
        read=retries,
        connect=retries,
        status_forcelist=[502],
    )
    adapter = HTTPAdapter(max_retries=retry)
    s.mount('http://', adapter)
    s.mount('https://', adapter)
    return s


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)

    s = get_session()
    r = s.get('https://pypi-dev.company.de/simple/', stream=True, timeout=3)
    ip = r.raw._connection.sock.getpeername()
    logging.info(f'status code is {r.status_code}')
    logging.info(f'ip is {ip}')
```

## Expected Result
```
$ python req.py 
INFO:root:status code is 200
INFO:root:ip is ('172.31.19.77', 443)
```

## Actual Result
```
$ python req.py 
WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=1, read=0, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi-dev.company.de', port=443): Read timed out. (read timeout=3)")': /simple/
Traceback (most recent call last):
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1349, in getresponse
    response.begin()
  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 316, in begin
    version, status, reason = self._read_status()
  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 277, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 447, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 336, in _raise_timeout
    raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi-dev.company.de', port=443): Read timed out. (read timeout=3)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 783, in urlopen
    return self.urlopen(
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/urllib3/util/retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pypi-dev.company.de', port=443): Max retries exceeded with url: /simple/ (Caused by ReadTimeoutError("HTTPSConnectionPool(host='pypi-dev.company.de', port=443): Read timed out. (read timeout=3)"))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/oschlueter/git/requests-dns-round-robin/req.py", line 25, in <module>
    r = s.get('https://pypi-dev.company.de/simple/', stream=True, timeout=3)
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/Users/oschlueter/git/requests-dns-round-robin/venv/lib/python3.9/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='pypi-dev.company.de', port=443): Max retries exceeded with url: /simple/ (Caused by ReadTimeoutError("HTTPSConnectionPool(host='pypi-dev.company.de', port=443): Read timed out. (read timeout=3)"))
```

Please note that everything is fine if I restart the application server on 172.31.33.222 and that requests only seems to use that one IP address to connect to my PyPI Cloud server:

```
for ((n=0;n<5;n++)); do python req.py; done
INFO:root:status code is 200
INFO:root:ip is ('172.31.33.222', 443)
INFO:root:status code is 200
INFO:root:ip is ('172.31.33.222', 443)
INFO:root:status code is 200
INFO:root:ip is ('172.31.33.222', 443)
INFO:root:status code is 200
INFO:root:ip is ('172.31.33.222', 443)
INFO:root:status code is 200
INFO:root:ip is ('172.31.33.222', 443)
```

## Reproduction Steps

* Setup a multi-value DNS record and two servers with reverse proxies and upstream services.
* Invoke the script above with your domain name instead of `pypi-dev.company.de` to identify which server requests connects to.
* Shut down the upstream service of that server but keep the reverse proxy up and running.
* Invoke the script again.

## System Information

```
$ python -m requests.help
{
  "chardet": {
    "version": null
  },
  "charset_normalizer": {
    "version": "2.0.3"
  },
  "cryptography": {
    "version": ""
  },
  "idna": {
    "version": "3.2"
  },
  "implementation": {
    "name": "CPython",
    "version": "3.9.6"
  },
  "platform": {
    "release": "20.6.0",
    "system": "Darwin"
  },
  "pyOpenSSL": {
    "openssl_version": "",
    "version": null
  },
  "requests": {
    "version": "2.26.0"
  },
  "system_ssl": {
    "version": "101010bf"
  },
  "urllib3": {
    "version": "1.26.6"
  },
  "using_charset_normalizer": true,
  "using_pyopenssl": false
}
```


I have neither the infrastructure nor the time to try to reproduce this but based solely on your description, I don't think you're quite testing this the way you think you are. Correct me if I'm wrong, but you said above that you have intermediaries between the actual application servers and requests. Without knowing how your proxies are configured, you're not taking the proxy down, you're taking the backend service down. Round-robin only works on attempting to connect to a resolved IP address (and is done not by Requests but by urllib3). We are able to open the socket because your proxy appears to be working and not immediately failing (hence the read timeout by the client). At that point, we never move on to the next IP address.

Again, round-robin for DNS resolution relies on the IP address that's resolved not responding or allowing connections and that logic lives in urllib3.