code: function doppler(it) {
      return __asyncGenerator(this, arguments, function* doppler_1() {
          var e_27, _a;
          const buffer = [];
          try {
              for (var it_7 = __asyncValues(it), it_7_1; it_7_1 = yield __await(it_7.next()), !it_7_1.done;) {
                  const item = it_7_1.value;
                  buffer.push(item);
                  yield yield __await(item);
              }
          }
          catch (e_27_1) { e_27 = { error: e_27_1 }; }
          finally {
              try {
                  if (it_7_1 && !it_7_1.done && (_a = it_7.return)) yield __await(_a.call(it_7));
              }
              finally { if (e_27) throw e_27.error; }
          }
          buffer.reverse();
          yield __await(yield* __asyncDelegator(__asyncValues(buffer)));
      });
  }
docs: Play the given AsyncIterable, and then play back that AsyncIterable in reverse