В методе chat.giga.client.auth.TokenBasedAuthClient#retrieveTokenIfExpired используется java.util.concurrent.atomic.AtomicReference#updateAndGet в javadoc которого написано:
The function should be side-effect-free, since it may be re-applied when attempted updates fail due to contention among threads.
Когда несколько потоков пытаются получить актуальный токен, происходит множество запросов получения нового токена, в несколько раз превышающее количество потоков, что приводит к ошибке TOO_MANY_REQUESTS.
В методе chat.giga.client.auth.TokenBasedAuthClient#retrieveTokenIfExpired используется java.util.concurrent.atomic.AtomicReference#updateAndGet в javadoc которого написано:
The function should be side-effect-free, since it may be re-applied when attempted updates fail due to contention among threads.
Когда несколько потоков пытаются получить актуальный токен, происходит множество запросов получения нового токена, в несколько раз превышающее количество потоков, что приводит к ошибке TOO_MANY_REQUESTS.