Build in "I should see ..." implementation will not wait until something happens. 
If you do not implement "I should see ..." on your own you will have to wait until "Download" button is visible. 
But if you create "I should see ..." test that actualy wait (using $session->wait()) for step status then "And I wait until the download button shows up" step will not be required anymore.