<!--  As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->

### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->

* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:** 
  * <!-- (output of `node_modules/.bin/electron --version`) e.g. 4.0.3 --> 5.0.3
* **Operating System:** 
  * <!-- (Platform and Version) e.g. macOS 10.13.6 / Windows 10 (1803) / Ubuntu 18.04 x64 --> macOS 10.14
* **Last Known Working Electron version:** 
  * <!-- (if applicable) e.g. 3.1.0 --> n/a

### Expected Behavior
<!-- A clear and concise description of what you expected to happen. -->

`app.moveToApplicationsFolder` should throw when it fails, as the docs say.

### Actual Behavior
<!-- A clear and concise description of what actually happened. -->

It doesn't throw, in fact it even returns `true`.

### To Reproduce

- Have Foo v1 located in `/Applications/Foo.app`
- Open it
- Have Foo v2, still named `Foo.app`, located somewhere else
- Open it
- Use `app.moveToApplicationsFolder`.
- Instead of moving the app the currently open Foo v1 window will be focused, and `app.moveToApplicationsFolder` returns `true` instead of throwing.

shell/browser/api/atom_api_app.cc
const base::DictionaryValue& options) {
  std::string file_data, cert_path;
  base::string16 password;
  net::ScopedCERTCertificateList imported_certs;
  int rv = -1;
  options.GetString("certificate", &cert_path);
  options.GetString("password", &password);
  if (!cert_path.empty()) {
    if (base::ReadFileToString(base::FilePath(cert_path), &file_data)) {
      auto module = model->cert_db()->GetPrivateSlot();
      rv = model->ImportFromPKCS12(module.get(), file_data, password, true,
                                   &imported_certs);
      if (imported_certs.size() > 1) {
        auto it = imported_certs.begin();
        ++it;  
        for (; it != imported_certs.end(); ++it)
          rv &= model->SetCertTrust(it->get(), net::CA_CERT,
                                    net::NSSCertDatabase::TRUSTED_SSL);
      }
    }
  }
  return rv;
}
#endif
void OnIconDataAvailable(util::Promise promise, gfx::Image icon) {