Indentation fixed.

I agree the "step" approach is unpleasant. The problem is Westpac's CSV export backend is pretty crude. It sends back multiple responses and must follow various link fragments to obtain the final CSV content, and sometimes an entire step is skipped at Westpac's backend's discretion. The conditions I observed when you experience step skipping relate to the speed at which subsequent requests are made to the server and whether you have an existing request pending (even from an earlier login session).

A state machine would be more elegant, and I've previously used the excellent [fysom](https://pypi.python.org/pypi/fysom) state machine library to address complex state transitions. However my instinct is adding a formal state machine for a 3-4 step process that itself models a pretty ugly Westpac backend seems overkill.