ESP8266WiFi.h - wrong WiFi connection status WiFi.status()

I have NodeMCU V3 ESP8266.

There is a simple code to connect to the Wifi network. My project needs the correct Wifi connection status, but ESP gives false connection information. When I turn off the WiFi router, the ESP connects to a non-existent network and gives the connection status with a non-existent IP.

How to get real WiFi network connection status?

Here is the info from Serial.print:

13:28:22.762 -> ........
13:28:25.153 -> Unable to Connect to mynetwork
13:28:25.186 -> Status WiFi: 3
13:28:25.186 -> Successfully connected to mynetwork
13:28:25.186 -> IP Address: 192.168.1.101
13:28:25.186 -> Status: 3
13:28:25.186 -> Mode: STA
13:28:25.186 -> PHY mode: N
13:28:25.186 -> Channel: 2
13:28:25.186 -> AP id: 0
13:28:25.186 -> Status: 5
13:28:25.186 -> Auto connect: 1
13:28:25.186 -> SSID (10): mynetwork
13:28:25.186 -> Passphrase (17): **************
13:28:25.186 -> BSSID set: 0

Then I turn on the WiFi router and get the following information:

14:29:25.186 -> IP Address: 192.168.1.3
14:29:25.186 -> Status WiFi: 3
14:29:25.186 -> Mode: STA
14:29:25.186 -> PHY mode: N
14:29:25.186 -> Channel: 2
14:29:25.186 -> AP id: 0
14:29:25.186 -> Status: 5
14:29:25.186 -> Auto connect: 1
14:29:25.186 -> SSID (10): mynetwork
14:29:25.186 -> Passphrase (17): **************
14:29:25.186 -> BSSID set: 0

My code:

#include <ESP8266WiFi.h>
#include <EEManager.h>

const char* ssid = "mynetwork"; 
const char* password = "******************";

void startWiFi() {
  //Try and Connect to the Network
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to ");
  Serial.print(ssid);
  Serial.println("...");

  //Wait for WiFi to connect for a maximum timeout of 8 seconds
  while (WiFi.status() != WL_CONNECTED && retries < 9)
  {
    Serial.print(".");
    retries++;
    delay(1200);
  }

  Serial.println();
  //Inform the user whether the timeout has occured, or the ESP8266 is connected to the internet
  if (retries == 9) //Timeout has occured
  {
    Serial.print("Unable to Connect to ");
    Serial.println(ssid);
    Serial.print("Status WiFi: ");
    Serial.println(WiFi.status());
  }

  if (WiFi.status() == WL_CONNECTED) //WiFi has succesfully Connected
  {
    Serial.print("Successfully connected to ");
    Serial.println(ssid);
    Serial.print("IP Address: ");
    Serial.println(WiFi.localIP());
    Serial.print("Status WiFi: ");
    Serial.println(WiFi.status());
  }
  WiFi.printDiag(Serial);
}  



void setup()
{
  Serial.begin(115200);
  delay(500);
  Serial.println();
  
  startWiFi();
}  

void loop()
{
   
  static uint32_t  lastTime = 0; // millis() memory

    if (millis() - lastTime >= 1000)
    {

      Serial.print("Status WiFi: ");
      Serial.println(WiFi.status());
      Serial.print("IP Address: ");
      Serial.println(WiFi.localIP());
      WiFi.printDiag(Serial);
  
    }
  
}

I feel like this is an ongoing issue :