type OnceFn = () => Promise; export function once(fn: OnceFn): OnceFn { let result: Promise; return () => { if (!result) { result = fn(); } return result; }; }