| 1898 | } |
| 1899 | |
| 1900 | const offerRemainingArray = <A, E>(self: Enqueue<A, E>, remaining: Array<A>) => { |
| 1901 | return internalEffect.callback<Array<A>>((resume) => { |
| 1902 | if (self.state._tag !== "Open") { |
| 1903 | return resume(core.exitSucceed(remaining)) |
| 1904 | } |
| 1905 | const entry: Queue.OfferEntry<A> = { |
| 1906 | _tag: "Array", |
| 1907 | remaining, |
| 1908 | offset: 0, |
| 1909 | resume |
| 1910 | } |
| 1911 | self.state.offers.add(entry) |
| 1912 | return internalEffect.sync(() => { |
| 1913 | if (self.state._tag === "Open") { |
| 1914 | self.state.offers.delete(entry) |
| 1915 | } |
| 1916 | }) |
| 1917 | }) |
| 1918 | } |
| 1919 | |
| 1920 | const releaseCapacity = <A, E>(self: Dequeue<A, E>): boolean => { |
| 1921 | if (self.state._tag === "Done") { |