Option 1: gis_wait_for_route_load_1.fsm
Your proposed solution to "wait" after the "updateRoute" call would cause the downloads to happen synchronously in series instead of asynchronously in parallel, which would be really slow and make FlexSim look like it has crashed.
A better solution would be to display the progress of the downloads. In the sample model attached above, a user command has been added that checks on the status of the downloaded routes.
I added some buttons and fields to show status information about the downloading of the routes. The first button builds the model. The second button checks on the status of the downloads and displays the current progress. If any of the downloads failed, a third button is available to try downloading those routes again.

Using timers, timeouts, and more UI code, you could automatically show the progress on the dashboard, but that would be more complicated. To make this example easier to understand, I left the updating of the progress as an explicit operation performed by pushing a button.
In FlexSim 23.2, we will be adding a Delay.realTime() coroutine method that would make adding this type of status update timer to the UI a lot easier and simpler. Right now, using UI timers in dashboards is complicated.
Option 2: gis_dynamic_routing_1.fsm
By default, the routes between points in the GIS module form a network of connections that can be used to route from any point to any other point, even if they aren't directly connected. The GIS Navigator takes care of properly determining the shortest route between the web of inter-connected points.
If you wanted to arbitrarily travel between any given lat/lon coordinate and any other arbitrary lat/lon coordinate rather than using the navigator, you could dynamically move the points and recalculate the route at the precise moment when you need to travel. Attached is an example demonstrating this technique.
The model uses two points on the map for each traveler. Before traveling, it moves the destination point to an arbitrary location and downloads the new route during the simulation right then. Then when the traveler travels again, it moves the other point to a new arbitrary location and downloads the new route. Thus, the traveler just travels from Point A to B to A to B to A during the simulation, but the location of Point A and B keep changing as the simulation runs.

This method uses live HTTP queries to a server during the simulation though, so if something messes up that communication, the simulation model will stop.
The default method of working with GIS routing does all its queries during the model building process (before Reset) rather than during the simulation run. Caching the necessary data beforehand is much faster and reliable than communicating with a server during the model run. But if you want something truly dynamic with infinite possibilities for point locations, then this method can work.