This *try/catch* block is humongous, which makes the code harder to read. And it doesn't need to be, since we don't expect setting *req.onerror* and *req.onsuccess* to fail. So it would be better to surround just the `mgmt.uninstall({origin: origin})` call with the *try/catch* block.

However, I don't think the block is actually necessary at all, since [mozIDOMApplicationMgmt::uninstall](https://github.com/mozilla/mozilla-central/blob/c238bf4cfbd5f81fe4fe07a4da86f26334b87fc5/dom/apps/src/Webapps.js#L691-L699) never throws. Of course it might trigger an exception anyway because of a bug in the code, but we don't typically catch such errors and expose users to them. So I would remove the block and report uninstallation failure only in the *onerror* callback.