While using the credentials flow (app permissions), refresh_token can fail with an IndexError.
connection.py line 884
result = self.msal_client.acquire_token_silent_with_error(
scopes=scopes,
account=self.msal_client.get_accounts(username=self.username)[0],
)
get_accounts can and does return an empty list when using app credentials, rather than delegated user credentials