Trap unhandled failures
Trap unhandled failures

If an exception escapes from the main `cli()` function, we don't handle it. On Node < 16 that results in a successful process exit code even though the process has crashed.

On Node >= 16 this was not a bug because of the stricter handling of unhandled promise rejections.

You can demonstrate the bug by putting a string in `ember-addon.paths` in your app's package.json file. (It's supposed to be an array, and will cause a crash.)

ember-cli/ember-cli,ember-cli/ember-cli,ember-cli/ember-cli