async parseAsync(inputText, position, allowReturnArray = false) {
        if (inputText.length === 0) throw Error('Input must not be empty.');
        this.position = position;
        this.async = true;
        const lexResult = lexer.lex(inputText);
        this.parser.input = lexResult.tokens;
        let res;
        try {
            res = await this.parser.formulaWithBinaryOp();
            res = this.checkFormulaResult(res, allowReturnArray);
            if (res instanceof FormulaError) {
                return res;
            }
        } catch (e) {
            throw FormulaError.ERROR(e.message, e);
        }
        if (this.parser.errors.length > 0) {
            const error = this.parser.errors[0];
            throw Utils.formatChevrotainError(error, inputText);
        }
        return res;
    }
Parse an excel formula asynchronously.
Use when providing custom async functions.
@param {string} inputText
@param {{row: number, col: number}} [position] - The position of the parsed formula
             e.g. {row: 1, col: 1}
@param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,
                                     or data validation formulas.
@returns {*}