Write a memoizeAsync function. It takes an async function of a string key and a cache time to live in milliseconds, and returns a wrapper: a repeated call with the same key doesn't go to the network, concurrent calls share a single request, and errors aren't cached.
~15 min by voice
How to approach it
This checks whether you understand JS's async model: that you need to cache the promise, not the result, so concurrent calls share one request. Interviewers also look at how you handle races around errors and TTL and how you manage the cache's lifecycle (size, invalidation).
The interviewer will ask this question and listen. Think out loud and ask for a hint if you need one. When you're done, pause or tap “That's my answer”. In about a minute, your score and the points you covered show up here.