At response = self.session.request, request may raise requests.exceptions.ReadTimeout such as requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='example.com', port=443): Read timed out. (read timeout=30) but that isn't handled by the webdav3 module. Having a foreign exception raised isn't expected in the calling application, which would have to import requests to handle the exception. Maybe the webdav3 should raise its own exception and provide the details.