snapshots and rewinding on top of ClojureScript core.async