Using `throw` would be possible, but I fear performance and code size would suffer (every action would need to be wrapped in `try..catch` or in a call of a function containing it, or exceptions would need to be used for control flow in the parser in general). Having an option for this is a no-go.

Side note: At this point, I don't care about backward compatibility too much. I very explicitly [say so in the README.md](https://github.com/dmajda/pegjs/blob/791034fad92c9cd7a9d1c71187df03441bbfd521/README.md#development). Also the version number < 1.0.0 together with using [semantic versioning](http://semver.org/) suggests so.