@@ -30,16 +30,18 @@ class Transaction {
3030 * @param {Promise } connectionPromise - A connection to use
3131 * @param {function() } onClose - Function to be called when transaction is committed or rolled back.
3232 */
33- constructor ( connectionPromise , onClose ) {
33+ constructor ( connectionPromise , onClose , errorTransformer ) {
3434 this . _connectionPromise = connectionPromise ;
3535 let streamObserver = new _TransactionStreamObserver ( this ) ;
3636 this . _connectionPromise . then ( ( conn ) => {
37+ streamObserver . resolveConnection ( conn ) ;
3738 conn . run ( "BEGIN" , { } , streamObserver ) ;
3839 conn . discardAll ( streamObserver ) ;
3940 } ) . catch ( streamObserver . onError ) ;
4041
4142 this . _state = _states . ACTIVE ;
4243 this . _onClose = onClose ;
44+ this . _errorTransformer = errorTransformer ;
4345 }
4446
4547 /**
@@ -98,7 +100,7 @@ class Transaction {
98100/** Internal stream observer used for transactional results*/
99101class _TransactionStreamObserver extends StreamObserver {
100102 constructor ( tx ) {
101- super ( ) ;
103+ super ( tx . _errorTransformer || ( ( err ) => { return err } ) ) ;
102104 this . _tx = tx ;
103105 //this is to to avoid multiple calls to onError caused by IGNORED
104106 this . _hasFailed = false ;
@@ -126,6 +128,7 @@ let _states = {
126128 } ,
127129 run : ( connectionPromise , observer , statement , parameters ) => {
128130 connectionPromise . then ( ( conn ) => {
131+ observer . resolveConnection ( conn ) ;
129132 conn . run ( statement , parameters || { } , observer ) ;
130133 conn . pullAll ( observer ) ;
131134 conn . sync ( ) ;
@@ -204,6 +207,7 @@ let _states = {
204207
205208function _runDiscardAll ( msg , connectionPromise , observer ) {
206209 connectionPromise . then ( ( conn ) => {
210+ observer . resolveConnection ( conn ) ;
207211 conn . run ( msg , { } , observer ) ;
208212 conn . discardAll ( observer ) ;
209213 conn . sync ( ) ;
0 commit comments