JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>
JavaScript
var Observable = Rx.Observable;
var initialDelay = 2000;
var repeatDelay = 200;
function repeat(v) { return v; }
function init() { return Observable.of(42); }
function status(_) { return Observable.of(!!Math.round(Math.random())); }
init().delay(initialDelay).flatMap(id =>
status(id).expand(s =>
repeat(s) ? Observable.of(null).delay(repeatDelay).flatMap(_ => status(id)) : Observable.empty()
)
).subscribe(console.log);