Memoize promise-returning or async functions. p-memoize speeds up repeated calls to asynchronous functions by caching their results. This is especially useful for functions making network requests or performing computationally expensive operations. It supports various caching strategies, including time-to-live (TTL), to manage cache invalidation and prevent stale data. Options include cacheKey, cache, and maxAge. Returns a memoized function.