A pattern I picked up while learning Go was to return an error object -- particularly useful when calling web services:

function getData() {
    let data = null;
    let error = null;

    try {
        data = "success";
    } catch (e) {
        error = e
    }

    return [data, error]
}

const [data, dataError] = getData();

https://www.npmjs.com/package/try-catch https://gist.github.com/coderaiser/a26e535bc43b5fe1ac4d72624bd6bed2