code: @Override
      public <R> MethodResult<R> run(Callable<R> callable) {
  
          if (!semaphore.tryAcquire()) {
              metrics.incrementBulkheadRejectedCount();
              return MethodResult.failure(new BulkheadException());
          }
  
          long startTime = System.nanoTime();
          metrics.incrementBulkeadAcceptedCount();
  
          try {
              return super.run(callable);
          } finally {
              semaphore.release();
              long endTime = System.nanoTime();
              metrics.recordBulkheadExecutionTime(endTime - startTime);
          }
      }
docs: {@inheritDoc}