diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 37d7a3c652ca5c1d142455a3bdc76d624217b044..e9e94c82e9c49c9897b022b041217abe7488eeee 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -1042,7 +1042,7 @@ private void procmessage() {
           portal=0;
           break;
         case 'E': {
-          if(!_readyforquerycount)
+          if (_portalsinflight <= 1 && !_readyforquerycount)
             sendsync();
           PD("%O ErrorResponse %O\n",
            objectp(portal)&&(portal._portalname||portal._preparedname),
@@ -1084,8 +1084,6 @@ private void procmessage() {
             case "25P02":    // Preserve last error message
               USERERROR(a2nls(lastmessage));
           }
-          if(objectp(portal))
-            portal->_releasesession();
           break;
         }
         case 'N': {