TakeUntil Operator
Added comprehensive TakeUntil operator with multiple overloads for stopping observable streams based on various signals:
- Observable-based: Stop when another observable emits a value
- Task-based: Stop when a task completes
- CancellationToken: Stop when cancellation is requested
- Predicate: Stop when a condition is met (sync and async variants)
- Custom delegate: Integrate event-based or callback-based completion signals via
CompletionObservableDelegate
TakeUntilOptions
Control error propagation behavior when signal sources fail:
SourceFailsWhenOtherFails = false(default) - Errors forwarded viaOnErrorResumeAsync, stream can recoverSourceFailsWhenOtherFails = true- Stream completes withResult.Failure, terminating the observable
CompletionObservableDelegate
Advanced pattern for custom completion signals. Provides a callback to trigger termination and returns an IAsyncDisposable for cleanup, enabling integration with timers, events, and other non-observable completion mechanisms.