Capivara sincronizar com has_no_css?

Desde a atualização para o Capybara 2.4, eu tenho encontrado esse problema. Anteriormente, esse bloco funcionava bem:

page.document.synchronize do
  page.should have_no_css('#ajax_indicator', :visible => true)
end

Ele deve forçar a espera até o indicador ajax desaparecer antes de prosseguir com a próxima etapa.

Como o acima mencionado retornaRSpec::Expectations::ExpectationNotMetError, a sincronização não executa novamente o bloco e apenas gera o erro. Não sei por que isso estava funcionando na versão que eu estava usando antes (acredito que 2.1).

osynchronize block apenas executa novamente os blocos que retornam algo como:

Capybara::ElementNotFound
Capybara::ExpectationNotMet

E o que um determinado driver adicionar a essa lista.

Veja a resposta de Justin para uma explicação mais abrangente e exemplos que não usamsynchronize, ou veja minha resposta para a solução direta.