GetPlayerControllerID in ChoosePlayerStart

When I use GetPlayerControllerID inside of the blueprint override for ChoosePlayerStart I get a -1, but if I do the same thing in the blueprint override for GetDefaultPawnClassForController I get the result I am looking for.

The documentation says a -1 means there is no controller for the passed in player. Wtf is that supposed to mean? I wasn’t passed a player I was passed a controller that I could successfully cast to a PlayerController. Wtf does it mean there is no controller for the valid PlayerController I was just passed? And why does this not work in ChoosePlayerStart when it does work in GetDefaultPawnClassForController? The default implementation for ChoosePlayerStart calls GetDefaultPawnClassForController, so I am inclined to believe if the PlayerController has a controller(???) at the point that GetDefaultPawnClassForController is called it should have it by time ChoosePlayerStart is called.

What is going on here?