Loops in event handlers are always trouble, because the event may happen again.
Delays in event handlers are also problematic, for the same reason.
It’s much better to set a timer, or maybe poll in Event Tick.
So, when the game first starts, you would call “Load Interstitial Ad” so that the main screen can mask the loading latency.
Then when player presses start, you check whether the ad is requested. If that fails, just go straight to the game – the provider has no ads for you at this time.
If it is successfully requested, set a timer that fires every 0.1 seconds, that checks if the ad is available. If so, show the interstitial and cancel this timer.
Else, if timing out after 5 seconds, start the game anyway.
I would expect the flow to be something like this:
Of course, this is all documented with brief one-liners that tell us nothing about how to actually use the system, and the Android C++ source code just thunks into some Java platform binding goop, so it’s hard to know what’s really going on here.