I couldn't see the solution code on that page, so I can't be sure, but what you describe is a valid solution. Basically, you can't make any FB calls until it's been loaded. If you implemented a method to chain/queue your call until after the init, that will get the job done.
Facebook does have some suggestions for how to do this best, but it's more of a handwaving of 'make sure FB is loaded first'. If you don't want your queue method, you can do the jQuery ready method and then do a quick polling to check if FB is available every 100ms and then execute the code once FB is ready. That may be very similar to what you're doing now.
Neither option is elegant, but hope that helps,
Alex