Para 1:tal como está, no tiene garantía de que syncProcess
se habrá ejecutado en el momento en que se exporte el cliente. En su lugar, debe hacer algo como en esta respuesta
y exportar una promesa en su lugar.
Para 2:con la solución a la que me vinculé en la pregunta anterior, esto se resolvería.
Para 3:una tabla de actualizaciones también detectaría las eliminaciones de registros, mientras que la simple selección de la base de datos no lo haría, ya que no sabe qué registros han desaparecido.
Para 4:el segundo comentario después del artículo al que se vinculó proporciona la respuesta (pista:las marcas de tiempo no son estrictamente monótonas).