Проблема в том, что вы отключаете new Promise
антипаттерн , и при этом неправильно распространяете ошибки. : -)
Правильный способ исправить это не использовать new Promise
вообще:
const promise = snekfetch.get('https://www.website.com/api/public/users?name=' + user)
.then(body => {
const json = JSON.parse(body.text);
const name = json.name;
return name;
});
Теперь promise
разрешит или отклонит на основании обещания от snekfetch
; если он разрешается, он разрешается с именем из JSON. (Я предполагаю, что вам действительно нужно проанализировать JSON, snekfetch
не сделает этого за вас.)
Если у вас была веская причина, чтобы обернуть вокруг нее еще одно обещание (здесь, похоже, его нет), вам необходимо убедиться, что вы распространили ошибку из snekfetch
. обещаю своим: .catch(reject)
:
// NOT APPROPRIATE HERE, but how you'd do it if you used an explicit new promise
const promise = new Promise((resolve, reject) => {
snekfetch.get('https://www.website.com/api/public/users?name=' + user)
.then(body => {
const json = JSON.parse(body.text);
const name = json.name;
resolve(name);
})
.catch(reject);
});