The first time the loop runs, status is set to WL_CONNECTED. After that, there is no way in your code for status to ever get set to anything other than WL_CONNECTED since status is only updated in the while loop and the while loop can only run if status != WL_CONNECTED. So even though it was disconnected by the call to WiFi.disconnect(), the while loop will never run again.

In order to run as you expect, you would want to change the while loop to look like this: