This should have no user impact and makes an upcoming change easier.
Previously, the logic was something like this:
```
let (promise, future) = Promise<String>.pending()
pushRegistrationManager.preauthChallengeFuture = future
requestPreauthChallenge()
promise.then { /* ... */ }
```
Now it's more like this:
```
let promise = pushRegistrationManager.receiveNextPreAuthChallengeToken()
requestPreauthChallenge()
promise.then { /* ... */ }
```