async function someFunc(throwError) {
    try {
        console.log('try... acquire resources')
        if (throwError) 
            return Promise.reject(new Error('Something went wrong'))
        else
            return Promise.resolve({ result: 'Some result' })
    }
    finally {
        console.log('finally... cleanup resources')
    }
}
async function main() {
    try {
        const res = await someFunc(true)
        console.log(res)
    } catch (ex) {
        console.error('Catching error outside of someFunc\n', ex)
    }
}
main()