You can make any function concurrent using goroutines:
for instance, instead of session.onReadyEnterWorld() , you could run go session.onReadyEnterWorld() .
This will run the function separately from the main thread, that way time.sleep will only freeze the goroutine and not the main thread.