added an option to skip writing back to the cache if the fetch block yielded nil