Im in situation where I have many potential error sources. Is there an elegant solution to this mess?
How should I reject it?
  function myFuction(hash) {
    return new Promise((resolve, reject) => {
      // this could return error
      const id = atob(hash);
      // this could return error   
      let data = firstFunction(id);
      // return error if not true
      if (data && data.id) {
        // this could return error   
        return secondFunction(data.id)
          .then(item => {
            // return error if not true
            if (item) {
              // this could return error  
              return thirdFunction(item)
                .then(payload => {
                  resolve('OK');
                });
            }
          });
      }
    });
  }
 
     
    