if a pawn does not have a controller yet, what controller are you trying to get a reference to?
you should set the default pawn from the game mode.
possession is a one way relationship between a controller and pawn, and both are spawned by the game mode.
a pawn cannot tell its controller to possess it, because possession is where pawns get a reference to its controller in the first place. and that relationship is 1 way, meaning it is playerControllers that possess or unpossess pawns, and pawns have no say in the matter.
both playercontroller and pawn are spawned from the gameMode, and possession happens during postLogin, in the GameMode::RestartPlayer function, based on DefaultPawnClass and PlayerControllerClass.