bug 1058698 - async ContentWorker

I don't think it's a good pattern though. Sure we can use it where necessary but it isn't necessary here, and for every add-on we add a sync-call for every tab opened. That isn't great especially when this is only to support testing. Here is the sort of thing I am thinking:

    XPCOMUtils.defineLazyGetter(this, "getLoaderPath", () => {
        return new Promise(resolve => {
            addMessageListener('sdk/loader/path', function listener({data}) {
                removeMessageListener(listener);
                resolve(data);
            });
            sendAsyncMessage('sdk/loader/helper');
        });
    });

Then just getLoaderPath.then(path => {});