/// <summary>Calls the <paramref name="action" />, preventing reentrancy if the reentrancy guard indicates that this method is already running and signaling its completion</summary>
 /// <remarks>If the method is called but reentrancy is prevented, the code is not queued, it is simply not executed and the method returns <see langword="false" /></remarks>
 /// <param name="guard">The reentrancy guard to use to prevent reentrancy - normally a unique guard should be used for a unique call</param>
 /// <param name="action">Code that needs to be protected from reentrancy</param>
 /// <returns>Returns <see langword="true" /> if the code is executed; otherwise <see langword="false" /></returns>
 public static bool CallReentrancySafe(WaitEnabledReenetrancyGuard guard, Action action) => guard.CallReentrancySafe(action);
 public static ReentrancyCallResult CallReentrancySafe(WaitEnabledReenetrancyGuard guard, Func <bool> action) => guard.CallReentrancySafe(action);