olá Emanuel G de Souza, muito obrigado pela leitura e as palavras!

você está correto, poderíamos sim retornar um objeto e a desestruturação de atributos também funcionaria!

eu tenho a preferência por array pelo uso de desestruturação com Promise.all , como:

const [res1, res2] = await Promise.all([req1, req2])

deixando a assinatura de código bem semelhante,

tenho projetos que tem a seguinte assinatura:

// função de serviço
async function meuServico() {
try {
const res = await fetch("...");
const data = await res.json();
return { ok: true, data };
} catch (err) {
return { ok: false, message: "para-humanos/ui", error: err.stack };
}
}
// utilização da função
async function main() {
const res = await meuServico();
if (res.ok) {
// `res.data`
} else {
// `res.message`
}
}

em ambos, fica bem simples criar tipos genéricos (TypeScript/FlowType) e ter a ajuda do editor para auto-completar os objetos retornados.

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store