When consumed by homeassistant, timeouts aren't dealt with gracefully. Cook timeouts into the retry logic.