Deduzco que no entiendes a fondo cómo funciona una transacción y cómo comparten, especialmente en Postgresql, los datos entre distintas conexiones.
Precisamente por cómo se supone que funciona es el principal motivo que me hace sospechar que falle en ese caso; desde fuera de transacción, por mucho que cambies un registro, dentro no se ve si lo tienes bloqueado.
Eneboo tiene dos conexiones, la principal y la auxiliar. La principal es la que se usa para casi todo. La auxiliar se dedica a crear índices, al util.sqlSelect, los cambios con outtransaction y creo que poco más.
En fin, si necesitas saber algo más concreto, dímelo. Pero no puedo realizar una explicación que me tomaría seguramente varias páginas para detallar cómo funcionan las transacciones de base de datos a bajo nivel y los hándicaps usuales.
PostgreSQL también tiene manuales y páginas que explican cómo funciona una transacción y el MVCC, que es la madre del cordero aquí.