[Feature Request] application扩展中，添加全局属性，属性内有异步操作，如何实现？
## Background
有这么一个需求，在egg启动后，定期去取一张表数据并缓存在redis中，这个表数据在整个app生命周期内不变，供sevice随时查询。
于是我想到在application中定义一个属性的方式来实现。这个属性第一次去redis中取，然后缓存在egg应用程序中。往后都直接从应用程序中直接读取即可。代码如下：

```
//app/extend/application.js
const USER = Symbol('Application#gacUser');
module.exports = {
    get gacUser() {
        if (!this[USER]) {
            let that = this;
            //!!!!!>>重点在这里：这个读取redis的操作是异步的，这造成每次第一次读取这个app.gacUser属性时，都无法正确返回。
            this.redis.get('gac-user').then(function (res) {
                if (res) {
                    that[USER] = JSON.parse(res);
                    return that[USER];
                }
            }, err => {
                return this[USER];
            })
        } else {
            return this[USER];
        }
    }
}
```

## Proposal
但问题来了：这个读取redis的操作是异步的，这造成每次第一次读取这个app.gacUser属性时，都无法正确返回，因为是异步，没有等待执行完就跑了。

所以想问：egg中的application扩展属性，如何兼容异步操作？

恳请各位大神答疑。谢谢。

