- Electron version: 1.2.2
- Operating system: Linux

This is a problem only in linux. It works in OSX.

``` javascript
win.hide()
win.capturePage(function(img){
 // never called
})
```

shell/browser/api/electron_api_web_contents.cc
params.load_type = content::NavigationController::LOAD_TYPE_HTTP_POST;
  }
  GURL base_url_for_data_url;
  if (options.Get("baseURLForDataURL", &base_url_for_data_url)) {
    params.base_url_for_data_url = base_url_for_data_url;
    params.load_type = content::NavigationController::LOAD_TYPE_DATA;
  }
  bool reload_ignoring_cache = false;
  if (options.Get("reloadIgnoringCache", &reload_ignoring_cache) &&
      reload_ignoring_cache) {
    params.reload_type = content::ReloadType::BYPASSING_CACHE;
  }
   Calling LoadURLWithParams() can trigger JS which destroys |this|.
  auto weak_this = GetWeakPtr();
  params.transition_type = ui::PAGE_TRANSITION_TYPED;
  params.should_clear_history_list = true;
  params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
   Discord non-committed entries to ensure that we don't re-use a pending
   entry
  ontents()->GetController().DiscardNonCommittedEntries();
  ontents()->GetController().LoadURLWithParams(params);
   ⚠️WARNING!⚠️
   LoadURLWithParams() triggers JS events which can call destroy() on |this|.
   It's not safe to assume that |this| points to valid memory at this point.
  if (!weak_this || !ontents())
    return;
   Required to make beforeunload handler work.
  NotifyUserActivation();
}
void WebContents::DownloadURL(const GURL& url) {