timeUntilNextToken method
Calculates the time remaining until the next token is available.
Returns Duration.zero if a token is already available. This is useful for implementing retry mechanisms or displaying wait times to users.
Implementation
Future<Duration> timeUntilNextToken() async {
final available = await getAvailableTokens();
if (available >= 1) return Duration.zero;
final refillRatePerMs = maxTokens / refillDuration.inMilliseconds;
final needed = 1 - available;
final msUntilNext = (needed / refillRatePerMs).ceil();
return Duration(milliseconds: msUntilNext);
}