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);