What must be wrapped in then() statements in CasperJS? How to determine execution order of sync/async functions?

I'm having something of a hard time determining what is asynchronous and what is not while running CasperJS, what must be wrapped in then() statements, and what is going to be evaluated when. I'll...