function main(sources) { const remove$ = componentRemove$.delay(50).startWith(0).scan((acc) => acc + 1); const first = isolate(Component, 'first')(sources); const second = isolate(Component, 'second')(sources); const vdom$ = Rx.Observable.combineLatest(first.DOM, second.DOM, remove$, (vdom1, vdom2, r) => { if (r === 0) { return div([vdom1, vdom2]); } else if (r === 1) { return div([vdom2]); } else if (r === 2) { return div([]); } else { done('This case must not happen.'); } } ); return { DOM: vdom$ }; }