evaluateFormula = async (id, formulaNumber, formula, context) => {
    await null;
    if (Object.hasOwn(makers, formula.type)) {
      const make = makers[formula.type];
      const value = await /** @type {unknown} */ (
        // @ts-expect-error TypeScript is trying too hard to infer the unknown.
        make(formula, context, id, formulaNumber)
      );
      if (typeof value === 'object' && value !== null) {
        // @ts-expect-error TypeScript seems to believe the value might be a string here.
        idForRef.add(value, id);
        refForId.set(id, value);
      }
      return value;
    } else {
      throw new TypeError(`Invalid formula: ${q(formula)}`);
    }
  }
@param {string} id
@param {string} formulaNumber
@param {Formula} formula
@param {Context} context