Я в нем попробовал разобраться, много сторонних провайдеров, но вовремя аутентификации (даже локальной) пользователя будет перенаправлять на их сервис
Пользователь прошел аутентификацию через учетную запись google, при добавлении нового пользователя в бд, продублировать полученный email в локальную учетную запись, а после дать возможность пользователю в настройках профиля добавить пароль?
Другое дело, когда он должен быть, а он не передан. Почему нет ошибки?
Только у вас foo тут не асинхронная - ее нет смысла ждать через await, если где-то там промис возвращается - переделайте ее на async/await