Async function en Javascript NodeJS

Estoy tratando de actualizar la contraseña de un usuario ya registrado y para ello primero encripto la nueva contraseña y después se la cambio, he tratado de varias formas y solo logro que se bloquee porque no cumple la promesa o devuelva una password null

Esta es la función que llamo con un await:

function encriptarNueva(newPassword) {
    return new Promise(resolve => {
        bcrypt.hash(newPassword, null, null, (err, hash) => {
            resolve = hash;
        });
    });
}

Y esta la función para cambiar la contraseña:

async function changePassword(req, res) {
    var params = req.body;
    var email = params.email;
    var password = params.password;
    var newPassword = params.newPassword;
    var nuevaPass;
    let userId = req.params.id;
    
    // Evitar que un usuario actualice a otro usuario:
    if (userId != req.user.sub) {
        return res.status(500).send({
            message: 'No tienes permiso para actualizar la contraseña de este usuario'
        });
    }
    
    nuevaPass = await encriptarNueva(newPassword);
    
    User.findOne({email: email}, (err, user) => {
        if (err)
            return res.status(500).send({
                message: 'Error en la petición'
            });
        if (user) {
            bcrypt.compare(password, user.password, (err, check) => {
                if (check) {
                    params.password = nuevaPass;
                    User.findByIdAndUpdate(userId, params, {new : true}, (err, userUpdated) => {
                        if (err)
                            return res.status(500).send({
                                message: 'Error en la petición de actualizar la contraseña'
                            });
                        if (!userUpdated)
                            return res.status(404).send({
                                message: 'No se ha podido actualizar la contraseña'
                            });
                        return res.status(200).send({user: userUpdated});
                        });
                } else {
                    return res.status(404).send({
                        message: 'La contraseña actual es incorrecta.',
                        user: user.password,
                        newPassword: newPassword,
                    });
                }
            });
        } else {
            return res.status(404).send({
                message: 'El correo asociado es inexistente'
            });
        }
    });
}

Cualquier sugerencia es bienvenida, gracias de antemano.