async function _callAsyncHook (plugin, hook, args) {
    let handler = plugin.execute[hook];

    if (typeof handler === 'string') {
        return handler;
    }

    if (typeof handler === 'object') {
        handler = handler.handler;
    }

    if (handler) { 
        let hr = handler.apply(plugin.context, args);
        
        if (hr instanceof Promise) {
            return (await plugin.error.wrapAsync(hr));
        }

        return hr;
    }
}
@param {NollupInternalPluginWrapper} plugin 
@param {string} hook 
@param {any[]} args
@return {Promise<any>}