Почему значение промиса передается аргументом, но не возвращается даже через .then?

Почему значение промиса передается аргументом в функцию, но не возвращается?

Пример:

async function loadData(url) { 
    let f = await fetch(url);
    
    if (!f.ok) {
        alert('получить файл не удалось');
    } else {
        let json = await f.json();
        
        f(json); // можно передать значение промиса аргументом в функцию, четко

        return json; // возвращает промис, а не значение
    }   
}

Пробовал вернуть так:

promis.then((value)=> {
    return value; // не возвращает  
});

Или так (как в схожих вопросах здесь):

let json = await f.json();
let p = json.then((value)=> {
    return value; // не возвращает
});
return p; // не возвращает значение

Подробный код:

class Ajax {
    result(url) {
        let p = this.load(url);
        p.then((value)=> {
            return value; // не возвращает  
        });
    }

    async load(url) {   
        try {
            let f = await fetch(url);       
        
            if(!f.ok) {
                throw new SyntaxError("Файл отсутствует"); // (*)
            }
        
            let json = await f.json();
        
            if(Object.keys(json.result).length ==0) {
                throw new SyntaxError("Данные отсутствуют : выборка пустого запроса"); // (*)
            }
        
            return json;
        } catch(er) {
            alert(`Ошибка : ${er}`); // TypeError: failed to fetch
        }
    }
}

let ajax = new Ajax;

alert(ajax.result('file.php')); // undefended
result(url) {
    let p = this.load(url);
    
    p.then((value)=> {
        f(value) // передаем аругмент
    });
    //alert(v);
            
}

function f(value) {
    return value; // undefended
}

Ответы (0 шт):