Existe uma maneira de retornar cedo na promessa adiada?

Então, eu tenho uma promessa que contém várias verificações como esta

function test(){
    var deferred = q.defer()
    var passed = false
    if(!passed){
        deferred.reject("Don't proceed")
        //return
    } else {
        if(!passed){
            deferred.reject("Don't proceed")
        } else {
            if(!passed){
                deferred.reject("Don't proceed")
            } else {
                setTimeout(function(){
                    console.log("Hello");
                    deferred.resolve()
                }, 100);
            }
        }
    }
    return deferred.promise
}

Isso parece ruim porque há uma pirâmide na parte inferior. Gostaria de saber se existe algo como retorno em 'q' que pode fazer o código parecer melhor? Por exemplo, assim:

function test(){
    var deferred = q.defer()
    var passed = false
    if(!passed){
        deferred.reject("Don't proceed")
        return
    }
    if(!passed){
        deferred.reject("Don't proceed")
        return
    }
    if(!passed){
        deferred.reject("Don't proceed")
        return
    } 
    setTimeout(function(){
        console.log("Hello");
        deferred.resolve()
    }, 100);
    return deferred.promise
}

Definitivamente, isso não funciona porque ele retornou antes que a promessa fosse retornada, mas estou me perguntando se existe algo como um retorno.

questionAnswers(2)

yourAnswerToTheQuestion