Because it is a static field  `HttpClient.Factory.createDefault();` in called on instantiating the HttpCommandExecutor.
If you are using on of the Constructors with `HttpClient.Factory httpClientFactory)` as parameter it is no neccesary to have the `HttpClient.Factory.createDefault();` And you will stock on exceptions inside this `HttpClient.Factory.createDefault();`

https://github.com/SeleniumHQ/selenium/blob/26c65c7a5c1be4558311e91802ce35942cfacee8/java/client/src/org/openqa/selenium/remote/HttpCommandExecutor.java#L48
if (!GET_ALL_SESSIONS.equals(command.getName())
          && !NEW_SESSION.equals(command.getName())) {
        throw new NoSuchSessionException(
          "Session ID is null. Using WebDriver after calling quit()?");
      }
    }
    if (NEW_SESSION.equals(command.getName())) {
      if (commandCodec != null) {
        throw new SessionNotCreatedException("Session already exists");
      }
      ProtocolHandshake handshake = new ProtocolHandshake();
      log(LogType.PROFILER, new HttpProfilerLogEntry(command.getName(), true));
      ProtocolHandshake.Result result = handshake.createSession(client, command);
      Dialect dialect = result.getDialect();
      commandCodec = dialect.getCommandCodec();
      for (Map.Entry<String, CommandInfo> entry : additionalCommands.entrySet()) {
        defineCommand(entry.getKey(), entry.getValue());
      }
      responseCodec = dialect.getResponseCodec();
      log(LogType.PROFILER, new HttpProfilerLogEntry(command.getName(), false));
      return result.createResponse();
    }
    if (commandCodec == null || responseCodec == null) {
      throw new WebDriverException(
        "No command or response codec has been defined. Unable to proceed");
    }
    HttpRequest httpRequest = commandCodec.encode(command);
    
    if (httpRequest.getHeader("Content-Type") == null) {
      httpRequest.addHeader("Content-Type", JSON_UTF_8);