I'm using the following two pieces of code :
    Store.addUser(newUserInfo).then(function(firstResult) {
        Store.getUserList().then(function(result){
                console.log('this side');
                console.log(result);
                io.sockets.emit('userAdded', {
                    userMapByUserId: result
                });
            }, function(error) {
                console.log('List of users could not be retrieved');
                console.log(error);
                io.sockets.emit('userAdded', {
                    userMapByUserId: []
                });
            }
        );
    }, function(rejection) {
        socket.emit('userNotAdded', {
            userId: -1,
            message: rejection.reason,
            infoWithBadInput: rejection.infoWithBadInput
        });
    });
and in Store :
var addUser = function(newUserInfo) {
    var validationResult = Common._validateUserInfo(newUserInfo);
    if (validationResult.isOK) {
        return keyValueExists('userName', newUserInfo.userName).then(function(userNameAlreadyExists) {
            if (userNameAlreadyExists) {
                validationResult = {
                    isOK: false,
                    reason: 'Username already exists',
                    infoWithBadInput: 'userName'
                };
                return Promise.reject(validationResult);
            } else {
                var newUserId = generateUserId();
                //TODO: change it somehting more flexible. e.g. a predefined list of attributes to iterate over
                var newUser = {
                    'userName': newUserInfo.userName,
                    'password': newUserInfo.password,
                    'userId': newUserId,
                    'lastModificationTime': Common.getCurrentFormanttedTime(),
                    'createdTime': Common.getCurrentFormanttedTime()
                };
                var user = new User(newUser);
                user.save(function(err) {
                    if (err) {
                        console.log(err);
                        console.log('There is a problem saving the user info');
                        return Promise.reject('There is a problem saving the user info');
                    } else {
                        console.log('A new user added: ');
                        console.log(newUser);
                        //return getUserList();
                        return Promise.accept(newUser);
                    }
                });
            }
        });
    } else {
        return Promise.reject(validationResult);
    }
};
But in the first code , when I do Store.addUser(newUserInfo) it always runs the first function (resolve function) which shouldn't be the case if we do return Promise.reject() in addUser. Any idea on why this happens ?  
 
    