async function asyncTrampoline(generatorFn, ...args) {
  const iterator = generatorFn(...args);
  let result = generatorNext(iterator);
  while (!result.done) {
    try {
      // eslint-disable-next-line no-await-in-loop
      const val = await result.value;
      result = generatorNext(iterator, val);
    } catch (err) {
      result = generatorThrow(iterator, err);
    }
  }
  return result.value;
}
Trampoline on {@link TrampolineGeneratorFn generatorFn} asynchronously.

@template {readonly any[]} TArgs Parameters for `generatorFn`
@template {(...args: TArgs) => Generator} TFn
@param {TFn} generatorFn Generator-returning function accepting any arguments
@param {TArgs} args Arguments to pass to `generatorFn`
@returns {Promise<TrampolineResult<TFn>>}