Uber No Se Ejecutara Sin Los Servicios De Google Play

In my understanding, flush() was intended to be called only once in "business transaction", it's responsibility is to sync all the in-memory changes with database. And this adheres well to the "functional" idea of making domain core "pure" of any side effects: we just move all side effects outside the domain code. Am I wrong? What drawbacks has this approach?