- Electron version: 1.3.6
- Operating system: Windows 7 x64
- Other: Microsoft Office 2013 (will make more sense in a bit)

`shell.openItem()` is a blocking call, it would be nice if it's async or has an async version to handle synchronous external application behavior.

Reproduce: 
Open a password-protected Microsoft Excel file, `shell.openItem()` will be blocking until the Password window is submitted or dismissed. Consequently Microsoft Word does not have this issue.

Related to #2761.

shell/browser/ui/inspectable_web_contents_impl.cc
base::DictionaryValue response;
    response.SetInteger("statusCode", response_headers_
                                          ? response_headers_->response_code()
                                          : 200);
    auto headers = std::make_unique<base::DictionaryValue>();
    size_t iterator = 0;
    std::string name;
    std::string value;
    while (response_headers_ &&
           response_headers_->EnumerateHeaderLines(&iterator, &name, &value))
      headers->SetString(name, value);
    response.Set("headers", std::move(headers));
    callback_.Run(&response);
    bindings_->loaders_.erase(bindings_->loaders_.find(this));
  }
  void OnRetry(base::OnceClosure start_retry) override {}