class ThreadSafe::Cache

def fetch_or_store(key, default_value = NULL)

def fetch_or_store(key, default_value = NULL)
  fetch(key) do
    put(key, block_given? ? yield(key) : (NULL == default_value ? raise_fetch_no_key : default_value))
  end
end