### What happened?

Using JDK 11 Http Client prevents reusing of DevTools instance. Earlier, this was not a problem since Selenium used a single instance of AsyncHttpClient and it was only closed when the JVM shuts down. But with the JdkHttpClient, Selenium uses a new instance each time and closes it too. 
Changes made as part of https://github.com/SeleniumHQ/selenium/pull/11345, which assigns the client to null while closing causes an NPE when re-using DevTools instance. The changes were made to prevent memory leaks. 

I am not sure about the right approach to address this. I will need to look into it further.

### How can we reproduce the issue?

```shell
Run https://github.com/SeleniumHQ/selenium/blob/trunk/java/test/org/openqa/selenium/devtools/DevToolsReuseTest.java with JDK 11 Http Client
```


### Relevant log output

```shell
Cannot invoke "java.net.http.HttpClient.newWebSocketBuilder()" because "this.client" is null
java.lang.NullPointerException: 
	at org.openqa.selenium.remote.http.jdk.JdkHttpClient.openSocket(JdkHttpClient.java:168)
	at org.openqa.selenium.devtools.Connection.reopen(Connection.java:92)
	at org.openqa.selenium.devtools.DevTools.createSession(DevTools.java:129)
	at org.openqa.selenium.devtools.DevTools.createSession(DevTools.java:117)
	at org.openqa.selenium.devtools.DevToolsReuseTest.shouldBeAbleToCloseDevToolsAndCreateNewInstance(DevToolsReuseTest.java:41)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
```


### Operating System

macOS Ventura

### Selenium version

Java 4.13.0

### What are the browser(s) and version(s) where you see this issue?

Chrome  117

### What are the browser driver(s) and version(s) where you see this issue?

ChromeDriver Version: 117.0.5938.149

### Are you using Selenium Grid?

_No response_
return "Consumer for " + name;
    }
  }
  public <X> CompletableFuture<X> send(SessionID sessionId, Command<X> command) {
    long id = NEXT_ID.getAndIncrement();
    CompletableFuture<X> result = new CompletableFuture<>();
    if (command.getSendsResponse()) {
      methodCallbacks.put(
          id,
          NamedConsumer.of(
              command.getMethod(),
              inputOrException -> {
                if (inputOrException.isRight()) {
                  try {
                    X value = command.getMapper().apply(inputOrException.right());
                    result.complete(value);
                  } catch (Throwable e) {
                    LOG.log(
                        Level.WARNING,
                        String.format("Unable to map result for %s", command.getMethod()),
                        e);
                    result.completeExceptionally(e);
                  }
                } else {
                  result.completeExceptionally(inputOrException.left());
                }
              }));
    }
    Map<String, Object> serialized = new LinkedHashMap<>();
    serialized.put("id", id);