The kernel can't "run a function". It can only wake a thread sleeping on a syscall. This is called blocking IO.
The whole point of async is to find a compromise between context switch cost and event buffering and the latency resulting from the latter. It is not about "running a function".
The whole point of async is to find a compromise between context switch cost and event buffering and the latency resulting from the latter. It is not about "running a function".