Como verificar a profundidade de um objeto?

Eu estou trabalhando em um sistema de permissões com profundidade variável; dependendo da complexidade de uma página, pode haver mais ou menos níveis. Eu procurei o StackOverflow para descobrir se isso foi perguntado antes, não consegui encontrá-lo.

Se eu tiver esse objeto:

{foo:{bar:{baz : 'baa'}}}

Preciso retornar 3, tem 3 níveis.

Com este objeto:

{abc: 'xyz'} 

Teria que ser 1.

Isto é o que eu tenho até agora:

utils.depthOf = function(object, level){
    // Returns an int of the deepest level of an object
    level = level || 1;

    var key;
    for(key in object){
        if (!object.hasOwnProperty(key)) continue;

        if(typeof object[key] == 'object'){
            level++;
            level = utils.depthOf(object[key], level);
        }
    }

    return level;
}

O problema é que conta também os elementos irmãos. Na verdade, não está obtendo profundidade, está contando todos os membros de um objeto.

questionAnswers(1)

yourAnswerToTheQuestion