<!--  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
v8::Local<v8::Value> val,
                     Browser::LoginItemSettings* out) {
    mate::Dictionary dict;
    if (!ConvertFromV8(isolate, val, &dict))
      return false;
    dict.Get("openAtLogin", &(out->open_at_login));
    dict.Get("openAsHidden", &(out->open_as_hidden));
    dict.Get("path", &(out->path));
    dict.Get("args", &(out->args));
    return true;
  }
  static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
                                   Browser::LoginItemSettings val) {
    mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
    dict.Set("openAtLogin", val.open_at_login);
    dict.Set("openAsHidden", val.open_as_hidden);
    dict.Set("restoreState", val.restore_state);
    dict.Set("wasOpenedAtLogin", val.opened_at_login);
    dict.Set("wasOpenedAsHidden", val.opened_as_hidden);
    return dict.GetHandle();
  }
};
template <>
struct Converter<content::CertificateRequestResultType> {
  static bool FromV8(v8::Isolate* isolate,