== _насколько возможно_ JS изолирован
проясни пожалуйста что ты понимаешь под изолированностью в данном случае, если сам признал, что вызов js может привести к краху. Что -то вроде мешка с обезьяной с грантами?
если ты аккуратно пишешь программу на JS, то расставляешь try/catch и ловишь ошибки в промисах. на этот случай ты можешь завести хоть один порт, хоть несколько, и сообщать в Elm, что что-то конкретно не срослось. Если ты ошибся в синтаксисе или где-то появилась зарейзилась неперехваченная ошибка, Elm об этом думать не должен.
Вызывая JS-функции в Elm напрямую (ты говоришь, что хочешь конвертации JS-объектов туда и обратно) ты потенциально можешь нарушить flow модели, изменить модель или не перехватить ошибку, инструмент портов вынуждает тебя постоянно об этом помнить — что внешний код это внешний код.