A function that takes a throwing closure as a parameter can use a non-throwing closure as an argument, since non-throwing functions are subtypes of throwing functions. Does the same apply for async vs. non-async? Can I stick a synchronous function as an argument for code expecting an async closure parameter?
Actually, in general, how can an async function call a regular one? And vice versa?