code: public AsyncBulkheadState createAsyncBulkheadState(ScheduledExecutorService executorService, BulkheadPolicy policy, MetricRecorder metricRecorder) {
          if (policy == null) {
              return new AsyncBulkheadStateNullImpl(executorService);
          } else {
              return new AsyncBulkheadStateImpl(executorService, policy, metricRecorder);
          }
      }
docs: Create an object implementing an asynchronous Bulkhead
  <p>
  If {@code null} is passed for the policy, the returned object will still run submitted tasks asynchronously, but will not apply any bulkhead logic.
  
  @param executorProvider the policy executor provider
  @param executorService  the executor to use to asynchronously run tasks
  @param policy           the BulkheadPolicy, may be {@code null}
  @return a new AsyncBulkheadState