**Is your feature request related to a problem? Please describe.**
The following cause a bad effect with the window appearing/exploding (glitch?) from top-left :
```
//user clicks on tray-icon => context-menu => show and I'm supposed to pop-up the app window
app.dock.show();
window.show();
```
This happens because app.dock.show() is not synchronous thus genie effect from the dockbar can't take place because the dock icon is not yet created when we call window.show().

**Describe the solution you'd like**
app.dock.show() should return a promise fullfilled when the icon is in the dock.

**Describe alternatives you've considered**
Right now I'm doing this and it works:
```
app.dock.show();
app.dock.setIcon(appIcon);
setTimeout(window.show, 500);
```

Another is to provide a way to disable system animation (OSX) for window.show() / window.hide().

**Additional context**
Of course I have no idea about internal API availability/functionality. If not possible we can just close this issue and other people will have a reference about it! :)
atom/browser/browser.h
#ifndef ATOM_BROWSER_BROWSER_H_
#define ATOM_BROWSER_BROWSER_H_
#include <memory>
#include <string>
#include <vector>
#include "atom/browser/browser_observer.h"
#include "atom/browser/window_list_observer.h"
#include "atom/common/promise_util.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/observer_list.h"
#include "base/strings/string16.h"
#include "base/values.h"
#include "native_mate/arguments.h"
#if defined(OS_WIN)
#include <windows.h>
#include "base/files/file_path.h"
#endif
namespace base {
class FilePath;
}
namespace gfx {
class Image;
}
namespace atom {
class AtomMenuModel;