Получается, этот пулл-реквест является ошибкой. Потому что не каждая suspend функция это IO/эффектом. Конечно, можно сделать такую договоренность в рамках проекта, но это не даёт параллелить чистые функции. У меня, например, есть огромная функция, которая подготавливает данные для графиков на основе одного data класса. Я её распараллелил, т.к. там много вычислений, но по логике этого реквеста я создал IO.
Нет, не является. IO заменяется на suspend, потому что suspend покрывает потребности IO и является более идиоматичным способом работы c IO эффектом. Я пока не готов подтвердить свою точку зрения, но, что-то мне подсказывает, что suspend (во всяком случае с multifire continuations) покрывает ещё кучу эффектов.
И да, хватить тащить идиомы из других языков, если в языке уже есть идиомы для задачи.