Говорю сразу мьютекс мне не подходит, так как это уже не будет параллельно.
С чего бы "уже не будет параллельно" ? Очень даже будет. По факту, при параллельных операциях всегда будет какая-нибудь блокировка, даже в Wait-Free алгоритмах, где используется CAS она есть, только на машинном уровне.
Как можно реализовать такое поведение?
Если не хочешь мьютекс (или другой блокирующий примитив), то используй CAS (Compare And Swap). Вот
документация
Идея слудующая:
- хранишь где нибудь поле с этим прокси
- при начале каждой операции сохраняешь старое значение прокси
- когда получаешь 429, то CAS'ом меняешь, то что хранится на новое (сравниваешь со старым)