The constructor might work (need to understand the memory model better for that) since the JMM might flush everything after construction.

I'm wondering if the `onNext`/`onCompleted`/`onError` is okay though as `getRecentValue()` may get a stale result. That may or may not be okay in this scenario. The `Iterator` will keep checking. It seems like it is a race condition by definition so probably okay here?