public async Task <RegistrationUserResult> RegisterUser(RegisterUserData newUser)
        {
            ValidatePassword(newUser);
            var user = newUser.ToModel(mapper, passwordHasher);

            await using var tmp = await connectionController.OpenConnectionAsync();

            return(await transaction.Run(async() =>
            {
                try
                {
                    user = await usersRepo.AddUser(user);
                }
                catch (ConnectionException)
                {
                    throw;
                }
                catch (Exception e)
                {
                    throw new UserRegistrationException(e.Message, e);
                }

                await notificationSender.OnUserRegistered(user.ToDto(mapper));
                var token = await AuthenticateUser(user.Id);

                return new RegistrationUserResult
                {
                    User = user.ToDto(mapper),
                    Token = token
                };
            }));
        }