My analytics tool processes crypto market data pulled from coingecko APIs and saves it to a .txt file. After repeated requests, I hit 429 responses, so I need solid rate-limiting baked in. At the same time, every call should fail gracefully and try again after a brief, sensible pause rather than hammering the endpoint. Here’s what I want in place: • A rate-limiter that queues or paces requests so the API never returns 429. • Robust error handling that captures response codes, logs full context, and surfaces clear messages to the user interface. • Retry logic that pauses for a short interval before re-attempting any failed call, with a clean exit and alert if the maximum number of retries is reached.