lib/rules/no-callback-literal.js
/**
 * Determine if a node has a possiblity to be an Error object
 * @param  {ASTNode}  node  ASTNode to check
 * @returns {boolean}       True if there is a chance it contains an Error obj
 */
Determine if a node has a possiblity to be an Error object
@param  {ASTNode}  node  ASTNode to check
@returns {boolean}       True if there is a chance it contains an Error obj
Determine if a node has a possiblity to be an Error object @param { ASTNode } node ASTNode to check @returns { boolean } True if there is a chance it contains an Error obj
function couldBeError(node) {
    switch (node.type) {
        case "Identifier":
        case "CallExpression":
        case "NewExpression":
        case "MemberExpression":
        case "TaggedTemplateExpression":
        case "YieldExpression":
            return true 
        case "AssignmentExpression":
            return couldBeError(node.right)
        case "SequenceExpression":
            return (
                node.expressions.length !== 0 &&
                couldBeError(node.expressions[node.expressions.length - 1])
            )
        case "LogicalExpression":
            return couldBeError(node.left) || couldBeError(node.right)
        case "ConditionalExpression":
            return couldBeError(node.consequent) || couldBeError(node.alternate)
        default:
            return node.value === null
    }
}
function couldBeError ( node ) { switch ( node . type ) { case "Identifier" : case "CallExpression" : case "NewExpression" : case "MemberExpression" : case "TaggedTemplateExpression" : case "YieldExpression" : return true case "AssignmentExpression" : return couldBeError ( node . right ) case "SequenceExpression" : return ( node . expressions . length !== 0 && couldBeError ( node . expressions [ node . expressions . length - 1 ] ) ) case "LogicalExpression" : return couldBeError ( node . left ) || couldBeError ( node . right ) case "ConditionalExpression" : return couldBeError ( node . consequent ) || couldBeError ( node . alternate ) default : return node . value === null } }
Determine if a node has a possiblity to be an Error object
 @param  {ASTNode}  node  ASTNode to check
 @returns {boolean}       True if there is a chance it contains an Error obj
Determine if a node has a possiblity to be an Error object @param { ASTNode } node ASTNode to check @returns { boolean } True if there is a chance it contains an Error obj
// possibly an error object.