Updated AwaitObservable so that only one continuation is called with hot observables #317
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With the previous implementation of AwaitObservable, hot observables (returned from methods such as Observable.Replay) would result in multiple continuation functions being called as the observer OnNext, OnError and OnCompleted methods are sometimes called as soon as the subscription is made. Added some failing unit tests to show this behaviour and changed the implementation of AwaitObservable to pass them. The new implementation starts a finite state machine style agent internally.
The unit tests in AwaitObservableTests.fs were set to be ignored as they were previously failing erratically. The new implementation seems to fix that (they each passed 1000 repeats here) so I have re-enabled them.