It turns out this is possible because WiFiManager supports async operation: ```cpp wm.setConfigPortalBlocking(false); ```