···315315 // CRITICAL: Add first permit immediately, then refill at steady rate
316316 let refill_rate_clone = refill_rate;
317317 tokio::spawn(async move {
318318- // Add first permit immediately so first request can proceed
319319- if sem_clone.available_permits() < requests_per_period {
318318+ if sem_clone.available_permits() < 1 {
320319 sem_clone.add_permits(1);
321320 }
322321323323- // Then refill at steady rate
324322 loop {
325323 tokio::time::sleep(refill_rate_clone).await;
326326- // Add one permit if under capacity
327327- // This creates a token bucket: max capacity is requests_per_period
328328- if sem_clone.available_permits() < requests_per_period {
324324+ if sem_clone.available_permits() < 1 {
329325 sem_clone.add_permits(1);
330326 }
331327 }