It has a few defects. One relates to stuff like if (x) switch (y) {} else z();, which gets rewritten to broken code. This is a parse-level problem and I haven't had time to fix it yet. Second, various ES5/6 features aren't entirely supported; for example functions-in-objects (let x = {f() {}};). There's probably more; the ES5 support was hacked on last-minute. Third, Caterwaul parses non-JS. let @

