Don't wait for subsystems to finish long-running tasks
Fire-and-forget your needs, then poll the actual data from the cache.
Let's pick a classical example of finding holiday deals from multiple providers (Expedia, Kayak, Sabre).
The client executes a non-blocking call, asking the backend to perform this lengthy task. Backend retrieves data from multiple sources in parallel. And writes to cache as soon as data becomes available.
Client can forward the UI while it's waiting for the data to be ready.
Your code needs to log important information about what just happened. In production! But it can't afford to wait for that to finish.
So you just pass the log collector the data you need, it acknowledges, and you move on. Fast.