promises and response caching