JSON error response, conditional madness

I have a request that I'm making and it returns a JSON body. I've mapped out the many different responses and values that there can be in the response. I'm trying to just spit JSON back out.

I realize that most APIS only spit out one error at a time, but their is the alternative, if you think about error messages in form validation (ex. char length, char, already taken) you want all of those errors at once, and it would be annoying to get them one-at-a time.

My question is: Is there a reasonable cleaner way to delegate nested or long if statements?

I could possibly use an array or object of conditional statements? Is there a module out there that can get this done?

var output = {};
output.errors = [];

request(options, function(err, response, body){
    if(err){
        output.errors.push("request error ["+err.message+"]");
    }else{

        if((typeof request !== "undefined") && response && dotty.exists(response, "statusCode") && response.statusCode !== 200){
                output.errors.push("response status code "+response.statusCode);
        }

        if((typeof body !== "undefined") && body){
            if(dotty.exists(body, "countryCode") &&  dotty.exists(body, "countryName") &&  body.countryCode == "-" && body.countryName == "-"){
                output.errors.push("no country code or name present in response");
            }else if(body && dotty.exists(body, "countryCode") &&  body.countryCode == "-" &&  body.countryCode !== "" ){
                output.errors.push("no country code in response");
            }else if(body && dotty.exists(body, "countryName") && body.countryName == "-" &&  body.countryCode !== "" ){
                output.errors.push("no country name in response");
            }

            if(dotty.exists(body, "statusCode") && body.statusCode == "ERROR"){
                output.errors.push(body.statusCode);
            }

            if(dotty.exists(body, "countryCode") &&  body.countryCode !== "-" &&  body.countryCode !== "" ){
                if(!dotty.exists(output,"country")) output.country = {};
                output.country.code = body.countryCode;
            }

            if(dotty.exists(body, "countryName") &&  body.countryName !== "-" &&  body.countryCode !== "" ){
                if(!dotty.exists(output,"country")) output.country = {};
                output.country.name = body.countryName;
            }            
        }else{
            output.errors.push("no body");
        }
    }
    if(output.errors.length == 0) output.errors = false;
    res.jsonp(output);
}

What's the limit to this sort of madness?

I went with the node module async which has a pretty nice function called waterfall() and it helped compartmentalize each thing going on in the process.