Run an async function once and remember its results