export function getDeferred () {
    let resolve; let reject;
    const promise = new Promise((res, rej) => {
        resolve = res;
        reject = rej;
    });
    promise.resolve = resolve;
    promise.reject = reject;
    return promise ;
};
let deferred=getDeferred();
async function fetchSomeData(){
    let data=await fetch('...')
    deferred.resolve(data);
}
async function someFunctionMustHaveFetchedData(){
    let data = await deferred;
    // do something after deferred resolved
}
why am i doing this?
someFunctionMustHaveFetchData will be called many times but data should only be fetch once