title: Java AWS SDK 2.x Async Client - can’t override thread pool executor
body: <p>I want to set custom thread pool executor for Async Client (e.g. <code>SnsAsyncClient</code>) for AWS SDK 2.x. I see that for AWS SDK 1.x there is exist <code>withExecutorFactory</code> on client builder, and for 2.x we need to set up <code>ClientAsyncConfiguration</code> and invoke <code>asyncConfiguration</code> method on client builder:</p>
  
  <pre><code>ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder()
          .advancedOptions(Map.of(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR,
                  myCustomExecutor));
  SnsAsyncClient.builder()
          .asyncConfiguration(asyncConfig.build())
          .build();
  </code></pre>
  
  <p>Still, custom thread pool executor not applies. I expect that all async calls and subsequent calls on <code>CompletableFuture</code> will be executed on custom executor, but it’s not true.
  During debug, I see that logic executes on different thread pools: <code>aws-java-sdk-NettyEventLoop-0-X</code>, <code>ForkJoinPool.commonPool-worker-X</code>. 
  Example of AWS SNS async call:</p>
  
  <pre><code>snsAsyncClient.publish(publishRequest)
          .thenApplyAsync(..)
          .whenCompleteAsync(..);
  </code></pre>
  
  <p>How to setup custom thread pool, so async non-blocking IO operations will be executed on specific thread pool?</p>
  
  <p>AWS SDK version:    <code>software.amazon.awssdk sdk-core 2.7.3</code></p>