Когда ты делаешь return! и он НЕ является последней инструкцией в CE - ты себе отстреливаешь колено.
Ты так и делаешь, у тебя после обработки Add и return в нём есть ещё инструкции после матча
Это означает что твоё обработчкик Add запустит следующий цикл с новым переданным стейтом
Получит там сообщение GET, отдаст ему этот новый стейт и вернёт управление в СТАРЫЙ цикл где ещё не было стейта и выполнение продолжится!
И актор продолжает выполнение СЕ после матча и видит там return! loop [] и продолжает