Не знаю как там устроено с смс( не пробовал пока). Но думаю нет никакой сложности проверять переменную на соответствие условиям и если надо то повторять предыдущий действия. Можно переходом к метке или сделать цикл который будет выполняться пока условие не выполниться.
кажется асинхронка иногда завершает работу самопроизвольно, не по теме. у меня у одного так? просто я не вижу причину для завершения. Было бы круто все видеть что происходит, в логе не видно.