code: function hasErrorHandler(node) {
              let ancestor = node;
  
              while (!astUtils.isFunction(ancestor) && ancestor.type !== "Program") {
                  if (ancestor.parent.type === "TryStatement" && (ancestor === ancestor.parent.block || ancestor === ancestor.parent.handler && ancestor.parent.finalizer)) {
                      return true;
                  }
                  ancestor = ancestor.parent;
              }
              return false;
          }
docs: Determines whether a thrown error from this node will be caught/handled within this function rather than immediately halting
  this function. For example, a statement in a `try` block will always have an error handler. A statement in
  a `catch` block will only have an error handler if there is also a `finally` block.
  @param {ASTNode} node A node representing a location where an could be thrown
  @returns {boolean} `true` if a thrown error will be caught/handled in this function