Пакет, который я нашел под названием await-to-js , также может ему помочь.
import to from 'await-to-js';
const [err, users] = await to(getUsers());
if(err) doSomething();
Идея похожа на метод Лиеса Чио, просто обертка. Скопировал исходный код сюда.
/**
* @param { Promise } promise
* @param { Object= } errorExt - Additional Information you can pass to the err object
* @return { Promise }
*/
export function to<T, U = Error> (
promise: Promise<T>,
errorExt?: object
): Promise<[U | null, T | undefined]> {
return promise
.then<[null, T]>((data: T) => [null, data])
.catch<[U, undefined]>((err: U) => {
if (errorExt) {
Object.assign(err, errorExt);
}
return [err, undefined];
});
}
export default to;