Fix race condition problems in much better way by refactoring out requests so information stays within object. Remaining checks are reasonable.