En mi caso, Gemini no envía Retry-After, así que hago lo siguiente: cuando recibo un 429, espero un tiempo fijo (por ejemplo, 1 segundo) y luego reintento. Pero si la respuesta trae el campo error.details con una sugerencia de espera, lo uso. Para no petar el sistema, también establezco un límite global de peticiones por minuto con ratelimit. Es un poco manual, pero no hay otra.