the signIn method now returns a promise