Looks like the issue stems from pip._internal.index._get_html_page and imports in pip/_internal/index.py.
The try..except ladder in _get_html_page() uses <class 'pip._vendor.requests.exceptions.HTTPError'> while the exception raised by requests is <class 'requests.exceptions.HTTPError'> and so pip does not recognize the two as equal. The exception is propagated while normally it would be caught there. Best Regards Błażej Michalik