In my mind the sync overload could be a blocking one, or a fire-and-forget one.
In case of blocking, like with Gwendal’s example, and more generally when the function returns a result, it doesn’t make much sense to call it from an async context.
However it can make sense to call a fire-and-forget function from an async context.
Then maybe those overloads should be only intended for blocking vs async ?