@Override protected void doEnqueue(Callback<Void> callback) {
    Listener limiterListener =
      limiter.acquire(null).orElseThrow(() -> STORAGE_THROTTLE_MAX_CONCURRENCY);

    limiterMetrics.requests.increment();
    EnqueueAndAwait enqueueAndAwait = new EnqueueAndAwait(callback, limiterListener);

    try {
      executor.execute(enqueueAndAwait);
    } catch (RuntimeException | Error t) { // possibly rejected, but from the executor, not storage!
      propagateIfFatal(t);
      callback.onError(t);
      // Ignoring in all cases here because storage itself isn't saying we need to throttle. Though
      // we may still be write bound, but a drop in concurrency won't necessarily help.
      limiterListener.onIgnore();
      throw t; // allows blocking calls to see the exception
    }
  }
To simplify code, this doesn't actually invoke the underlying {@link #execute()} method. This
is ok because in almost all cases, doing so would imply invoking {@link #enqueue(Callback)}
anyway.
zipkin-server/src/main/java/zipkin2/server/internal/throttle/ThrottledCall.java