Оказывается, браузеры по-разному относятся к итерированию цикла for-of. Судите сами:
for(const a of []) ; // chrome: ok, ff: syntax error
На что ругается Firefox? Говорит, что a указана, как константа, а используется как переменная. Но почему?
for(let a of [1, 2]) setTimeout(() => alert(a));
Chrome: 1, 2Firefox: 2, 2
Всё просто. Chrome каждую итерацию пересоздаёт scope, а Firefox довольствуется одним. И если с const ошибка вылезет сразу (правда только в Firefox). То в случае чего-нибудь асинхронного ждите трудно-вылавливаемые баги, которые проявятся только в Firefox-е. В спеку мне лезть лень, но код генерируемый babel-ем ближе к Chrome-варианту. Кто прав?