code: private void checkFailFast()
     {
        final long initializationTimeout = config.getInitializationFailTimeout();
        if (initializationTimeout < 0) {
           return;
        }
  
        final long startTime = currentTime();
        do {
           final PoolEntry poolEntry = createPoolEntry();
           if (poolEntry != null) {
              if (config.getMinimumIdle() > 0) {
                 connectionBag.add(poolEntry);
                 logger.debug("{} - Added connection {}", poolName, poolEntry.connection);
              }
              else {
                 quietlyCloseConnection(poolEntry.close(), "(initialization check complete and minimumIdle is zero)");
              }
  
              return;
           }
  
           if (getLastConnectionFailure() instanceof ConnectionSetupException) {
              throwPoolInitializationException(getLastConnectionFailure().getCause());
           }
  
           quietlySleep(SECONDS.toMillis(1));
        } while (elapsedMillis(startTime) < initializationTimeout);
  
        if (initializationTimeout > 0) {
           throwPoolInitializationException(getLastConnectionFailure());
        }
     }
docs: If initializationFailFast is configured, check that we have DB connectivity.
  
  @throws PoolInitializationException if fails to create or validate connection
  @see HikariConfig#setInitializationFailTimeout(long)