def wrapper(http, *args, **kwargs): try: return func(http, *args, **kwargs) except requests.exceptions.ConnectionError as e: # if we cannot attempt a fallback, re-raise # TODO: See if we can determine why this failed fallback_hosts = Defaults.get_fallback_hosts(http.options) if kwargs.get("host") or not fallback_hosts: raise last_exception = None for host in fallback_hosts: try: kwargs["host"] = host return func(rest, *args, **kwargs) except requests.exceptions.ConnectionError as e: # TODO: as above last_exception = e raise last_exception