Related Object Manager
The Related Object Manager is a handy class that can be utilized to wait for the creation of multiple DOs. You simply pass the IDs of the objects you want to wait for as a list and a callback method. This callback method is called when all objects have been created successfully. This manager is readily available in repository-based classes like the Client Repository.
# Use the client repositories manager
cr.relatedObjectMgr.requestObjects(
    [
     playerDoId,
     levelDoId,
     someOtherObjectDoId
    ],
    allCallback = self.allObjectsManifested)
def allObjectsManifested(self, allObjects):
    # allObjects now contains the DOs for the player, level
    # and someOtherObject
