так, ну с rate limit'ом не самое сложно разобраться.
дальше встает вопрос - как нам выдерживать нужный rate limit, делая не больше запросов, чем можно, но и не меньше.
сейчас у нас синхронный код: делаем запрос, ждем ответ, как пришел - обрабатываем данные. пока стороннее API работает нормально - все ок. но как только время ответа увеличивается - у нас начинаются проблемы, очередь растет, а мы просто в X потоков сидим и ждем ответ от сервера.
переписать все на асинхронщину не предлагать, ресурсов на это нет:)