First of all, this extension relies on Global variables in the demo. It's a practical way to handle the ads and the targeted networks so I suggest you do the same in your FSMs.
When it comes to sensitive operations like this, I think it's better to have a single GO dedicated to each ad type (interstitial, rewarded) and have multiple FSMs on it, to keep important steps separate, like checking if an ad is available, loading one, showing one, and keeping track of the result.
Use a bool named interstitialAd_running for example in the FSM that launches the advertisement and check if it's set to true before sending an event to this FSM to launch the ad from anywhere else in your game.
Set this boolean to true if an ad is properly launched (assuming one was available, which you might need to check beforehand too).
Reset interstitialAd_running once the ad has finished playing (put it back to false).