Allow optional cache key to take in a proc