;;//define your fetch function:
Note: if key is an object, its toString() method must return a unique hash.
By default, memoize uses a mem cache with no expiration. To specify your own caching implementation, pass an array of Caches as the second parameter.
Memoize will first look for the item in
cache1, then in
cache2, and so on. If the item is not found in the caches,
fetchItem will be called. Note that your cache implementations do not have to worry about dealing with concurrency, memoize will take care of that.