Small fixes
A selection of 80 fixes from 174 pull requests.
45.Errors during finalization
A writable’s _final error left the sink waiting for a finish event that would never arrive. Keep the error listener active through finalization.
1234567123456714891011121314181516171819202122Effect.raceFirst(Effect.callback<never, E>((resume) => { const onError = (error: unknown) => resume(Effect.fail(options.onError(error))) options.writable.once("error", onError) return Effect.sync(() => { options.writable.off("error", onError) })})),options.endOnDone !== false ? Pull.catchDone((_) => { if ("closed" in options.writable && options.writable.closed) { return Cause.done(_) } return Effect.callback<never, E | Cause.Done<unknown>>((resume) => { const onFinish = () => resume(Cause.done(_)) options.writable.once("finish", () => resume(Cause.done(_))) options.writable.once("finish", onFinish) options.writable.end() return Effect.sync(() => { options.writable.off("finish", onFinish) }) }) }) : identity identity,Effect.raceFirst(Effect.callback<never, E>((resume) => { const onError = (error: unknown) => resume(Effect.fail(options.onError(error))) options.writable.once("error", onError) return Effect.sync(() => { options.writable.off("error", onError) })}))