diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 048f9e7e864c261f322bdff998a8438512fd9cb5..ae84c2b82620381f3e5d1f5ae53483d562f7669a 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -2444,8 +2444,8 @@ class proxy {
     throwdelayederror(this);
     {
       Thread.MutexKey lock;
-      if (qportals && qportals->size())
-        catch(cancelquery());
+      while (qportals && qportals->size())
+        sleep(0.1, 1);			// Drain portal queue to completion
       if (unnamedstatement)
         termlock = unnamedstatement->lock(1);
       if (c)				// Prevent trivial backtraces