def fetch(key, parameters = {}, conditions = {}, &blk)
      read(key, parameters) ||
        @stores.capture_first {|s| s.fetch(key, parameters, conditions, &blk)} ||
        blk.call
    end
def fetch(key, parameters = {}, conditions = {}, &blk)
      read(key, parameters) ||
        @stores.capture_first {|s| s.fetch(key, parameters, conditions, &blk)} ||
        blk.call
    end
tries to read the data from the store.  If that fails, it calls
 the block parameter and persists the result.  If it cannot be fetched,
 the block call is returned.