Hit 429 rate limits during bulk user profile updates via C# SDK

I am running a nightly sync job to update user profiles in Genesys Cloud. The script iterates through a list of about 500 agents and calls PlatformClient.Users.UpdateUserAsync for each one. It works fine for the first 20 or so requests. Then it starts failing hard with HTTP 429 Too Many Requests.

I tried adding a simple Task.Delay(2000) between calls to space them out. It helps a little but the job still times out eventually because we have 2000 agents to sync. I know the API has rate limits but I am not sure how to implement a proper exponential backoff strategy in C# without blocking the main thread for too long.

Here is the current loop:

foreach (var agent in agentList)
{
 try 
 {
 var update = new User { Name = agent.Name, Email = agent.Email };
 await _platformClient.Users.UpdateUserAsync(agent.Id, update);
 }
 catch (ApiException ex) when (ex.ErrorCode == 429)
 {
 // Just sleep for now
 await Task.Delay(2000);
 }
}

Is there a standard way to handle the retry logic with backoff? I want to make sure I am not hitting the limits too aggressively. The RetryPolicy in the SDK seems to only handle 5xx errors. Does it cover 429s? I need a way to pause and retry intelligently.