import xs, { Stream } from 'xstream' // Just a declarative version of xs.imitate export default function circular( s1: (s2$: Stream) => Stream, s2: (s1$: Stream) => Stream ): any { const proxy$ = xs.create() as Stream const stream1$ = s1(proxy$) const stream2$ = s2(stream1$) proxy$.imitate(stream2$) return [stream1$, stream2$] }