code: @Override
      public boolean getPermission(final Duration timeoutDuration) {
          try {
              boolean success = semaphore.tryAcquire(timeoutDuration.toNanos(), TimeUnit.NANOSECONDS);
              publishRateLimiterEvent(success);
              return success;
          } catch (InterruptedException e) {
              Thread.currentThread().interrupt();
              publishRateLimiterEvent(false);
              return false;
          }
      }
docs: {@inheritDoc}