I think this should do it. You have to use q or inject angular.$q.
app.factory('Auth', function($firebaseSimpleLogin, FIREBASE_URL, $rootScope) {
var ref = new Firebase(FIREBASE_URL);
var auth = $firebaseSimpleLogin(ref);
var deferred = Q.defer(); // from Q lib
// var deferred = $q.defer(); //angularjs q
var Auth = {
register: function (user) {
auth.$createUser(user.email, user.password)
.then(function(result) {
deferred.notify('user created.'); // optional notify progress
return auth.$login('password', user); // return a new promise for chaining.
},
function(reason) {
// createUser failed
deferred.reject(reason);
})
.then(function(result) {
// resolve the login promise return from above
deferred.resolve(result);
},
function(reason) {
// login failed
deferred.reject(reason);
});
return deferred;
},
login: function (user) {
return auth.$login('password', user);
},
...