It likely doesn't need anything more. You made it work yourself, without anything more 'persistent':
https://github.com/joshuaadickerson/NotElkarte/commit/c5a2928c63a3b81a1f93541648c3544666a05acd
// grab $topic_info
// use something from it
// continue
// use something else from it
$topic_info is just a local variable in the controller function. That's fine by the looks of it. Whatever the getTopicInfo() does, it's a blackbox, all the controller needs is its result.