makeIteratorRef = iterable => {
  const iterator = asyncIterate(iterable);
  // @ts-ignore while switching from Far
  return makeExo('AsyncIterator', AsyncIteratorInterface, {
    async next() {
      return iterator.next(undefined);
    },
    /**
     * @param {any} value
     */
    async return(value) {
      if (iterator.return !== undefined) {
        return iterator.return(value);
      }
      return harden({ done: true, value: undefined });
    },
    /**
     * @param {any} error
     */
    async throw(error) {
      if (iterator.throw !== undefined) {
        return iterator.throw(error);
      }
      return harden({ done: true, value: undefined });
    },
    [Symbol.asyncIterator]() {
      return this;
    },
  });
}
@template T
@param {SomehowAsyncIterable<T>} iterable The iterable object.
@returns {FarRef<Reader<T>>}