async hook(hookName, ...args) {
        const results = [];
        for (let extension of this._extensions) {
            if (!extension[hookName]) {
                continue;
            }

            results.push(await extension[hookName].apply(extension, args));
        }

        return results;
    }
Calls a hook on any loaded extensions. Internal, used by CLI commands

@param {string} hookName name of hook to call
@param {...any} Arguments to pass to the hook
@return {Promise<void>} Promise that resolves after the hook has been called
                        on each of the extensions
@method hook
@private