The loop is the glue between coroutines and runtimes. It makes the coroutine progress while allowing runtime to process I/O.