const a = Object.getPrototypeOf( Object.getPrototypeOf( /* istanbul ignore next */ async function* () { } ).prototype ); class c { #t; #n; #r = !1; #e = void 0; constructor(e, t) { this.#t = e, this.#n = t; } next() { const e = () => this.#s(); return this.#e = this.#e ? this.#e.then(e, e) : e(), this.#e; } return(e) { const t = () => this.#i(e); return this.#e ? this.#e.then(t, t) : t(); } async #s() { if (this.#r) return { done: !0, value: void 0 }; let e; try { e = await this.#t.read(); } catch (t) { throw this.#e = void 0, this.#r = !0, this.#t.releaseLock(), t; } return e.done && (this.#e = void 0, this.#r = !0, this.#t.releaseLock()), e; } async #i(e) { if (this.#r) return { done: !0, value: e }; if (this.#r = !0, !this.#n) { const t = this.#t.cancel(e); return this.#t.releaseLock(), await t, { done: !0, value: e }; } return this.#t.releaseLock(), { done: !0, value: e }; } } const n = Symbol(); function i() { return this[n].next(); } Object.defineProperty(i, "name", { value: "next" }); function o(r) { return this[n].return(r); } Object.defineProperty(o, "name", { value: "return" }); const u = Object.create(a, { next: { enumerable: !0, configurable: !0, writable: !0, value: i }, return: { enumerable: !0, configurable: !0, writable: !0, value: o } }); function h({ preventCancel: r = !1 } = {}) { const e = this.getReader(), t = new c( e, r ), s = Object.create(u); return s[n] = t, s; } export { h as asyncIterator };