Add the ability to cache and reuse promises.