async memoize
use memoized versions of hash to compute cache key