acquire method
Implementation
@override
Future<void> acquire({int estimatedTokens = 0}) async {
_refill();
if (_tokens >= 1.0 && _waiters.isEmpty) {
_tokens -= 1.0;
return;
}
final c = Completer<void>();
_waiters.add(c);
_scheduleWake();
return c.future;
}