Well blocking IO means that a given thread cannot do anything more until the IO is fully received (in the case of sockets this wait could be a long time).
Выделение жирным - моё
тоесть, у тебя закрывающая скобка цикла, достижение которой переходит на следующую итерацию цикла, не композится через Then с await и цикл выполняется, а не блокируется, просто выход из цикла должен будет дождаться всех await? тогда не вижу проблемы. А если блокируется, то это и есть синхронное ио — поток исполнения стоит и не важно что делает поток воркера.