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 }; })); }