SYSTEM_MODE() other than
AUTOMATIC then it is async.
SYSTEM_MODE(SEMI_AUTOMATIC) things can get a bit “murky”.
Depending on device OS version the system sometimes holds off of calling
loop() (again) before the connection is reestablished - hence I usually test the behaviour case-to-case
However, since the communication with the cellular module impacts the over all performance of the system during connection attempts, it’s best to monitor the connection status and actively disconnect from the network when you detect multiple failed attempts to reconnect.
Particle.connect() is usually not taking most the time. It’s typically the implicit
Cellular.connect() part that takes the longest.