Extracted from #4696.
Currently an async function which calls another async function inside a noasync block works fine, but it works sub-optimally, because it does the overhead associated with suspending in order to make the call, when it could take advantage of the assertion that the call will not suspend.
Additionally, it should invoke runtime safety violation if the call incorrectly suspends.