DTX, чистый значит не производящий никаких "сайд" эффектов во вне, типа: запрос сервера, вывод чего-то, ввод чего-то, чтение\запись файлов и т.п. Чистые функции ВСЕГДА возвращают один и тот же результат на одни и те же входные данные.
"Что Task, что промис не могут быть чистыми, потому что идет http запрос" - ни таск, ни промис никак не связаны с запросами, можете отправлять, а можете не отправлять, разница в способе вызова.
Kaizaki, суть не в запросах, а в том что все side effects в случае с промисами проявляются моментально, а Task это готовый к обработке объект задачи, запустить исполнение которой можно с помощью специального метода. Вот и вся разница.