I am implementing a rate-limited non-blocking thread pool. Upon hitting the rate limit, I would like a timer to wake up threads when the next permit is expected to expire. Please provide a method that returns the minimum amount of time the caller would have to wait before the next permit can be acquired.