Clojurescript port of clojure/core.cache