I understand that Graph SDK implements a default retry handler that can take care of retrying when 429 occurs. After going through RetryHandler.cs class on GitHub I can see that every response is being checked for 429 and if there is a 429 (Too Many Requests) response, it uses Retry-After header (if available) or exponential back-off to determine the time for which the Task will be delayed.
For my question please consider the following scenario:
- I have an azure function that uses client credential flow
- It can be triggered by another application (not the user)
- I have a graph service client that is a static object and consumes graph
- One of the requests ends up being throttled (429) and the Tasks is delayed
- While that Task is waiting (being delayed), another requests comes to the application that consumes the same graph resource
Question: Will the Graph Service Client, considering that it is the same static object and the other task is being delayed, send the request again to the Graph without considering that the endpoint is being throttled?
Thanks