Single notification service for email + SMS
One listener, every transactional auth event.
Wire all auth notifications through one service so it's easy to swap providers, mute in tests, and audit centrally.
With a queue
Replace direct sends with this.queue.add(...) to make every send retryable and decoupled from the auth response.
The queue worker calls Resend / Twilio. On failure, the queue retries with backoff.