Starten Sie ein Versprechen erneut, nachdem der Versuch fehlgeschlagen ist

Ich verwende Nodejs und Q, um eine Folge von asynchronen Funktionen auszuführen. Wenn eine fehlschlägt, möchte ich eine andere Funktion ausführen und dann die Sequenz erneut starten. Hier ist es wie es ist:

var promise = database.getUserCookies(user)
    .then(function (data){
        return proxy.search(data);
    })
        .fail(function (data) {
            if (data.rejected === 302) {
                var relogin = database.fetchAuth(data)
                    .then(function (data) {
                        return proxy.login(data)
                    })
                    .then(function (data){
                        return database.saveCookies(data);
                    })
                    .then(function (data){
                        //Restart the promise from the top.
                    })
            }
        })
    .then(function (data){
        return responser.search(data);
    })

Antworten auf die Frage(1)

Ihre Antwort auf die Frage