Ensures async function is only called once and caches results for other calls.