### 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_
@Override
    public void onText(CharSequence data) {
      EXECUTOR.execute(
          () -> {
            try {
              handle(data);
            } catch (Throwable t) {
              LOG.log(Level.WARNING, "Unable to process: " + data, t);
              throw new DevToolsException(t);
            }
          });
    }
  }
  private void handle(CharSequence data) {
    
    
    
    String asString = String.valueOf(data);
    LOG.log(getDebugLogLevel(), "<- {0}", asString);
    Map<String, Object> raw = JSON.toType(asString, MAP_TYPE);
    if (raw.get("id") instanceof Number
        && (raw.get("result") != null || raw.get("error") != null)) {
      Consumer<Either<Throwable, JsonInput>> consumer =
          methodCallbacks.remove(((Number) raw.get("id")).longValue());
      if (consumer == null) {
        return;
      }
      try (StringReader reader = new StringReader(asString);