diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 6a462f4b599a34f55c9752d27b3b1597d676bfde..2488dc1dde88c741a158777240cb42d854d418d7 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -1497,6 +1497,11 @@ class sql_result {
     return local_backend->call_out(gottimeout, timeout);
   }
 
+  inline void scuttletimeout(array cid) {
+    if (local_backend)
+      local_backend->remove_call_out(cid);
+  }
+
   //! @returns
   //!  One result row at a time.
   //!
@@ -1515,7 +1520,7 @@ class sql_result {
         PD("%O Block for datarow\n", _portalname);
         array cid = setuptimeout();
         PT(datarow = datarows->read());
-        local_backend->remove_call_out(cid);
+        scuttletimeout(cid);
         if (arrayp(datarow))
           return datarow;
       }
@@ -1542,7 +1547,7 @@ class sql_result {
     if (!sizeof(datarow)) {
       array cid = setuptimeout();
       PT(datarow = datarows->read_array());
-      local_backend->remove_call_out(cid);
+      scuttletimeout(cid);
     }
     replenishrows();
     if (arrayp(datarow[-1]))
@@ -1585,7 +1590,7 @@ class sql_result {
     for (;;) {
       array cid = setuptimeout();
       PT(datarow = datarows->read());
-      local_backend->remove_call_out(cid);
+      scuttletimeout(cid);
       if (!arrayp(datarow))
         break;
       callout(callback, 0, this, datarow, @args);
@@ -1614,7 +1619,7 @@ class sql_result {
     for (;;) {
       array cid = setuptimeout();
       PT(datarow = datarows->read_array());
-      local_backend->remove_call_out(cid);
+      scuttletimeout(cid);
       if (!datarow || !arrayp(datarow[-1]))
         break;
       callout(callback, 0, this, datarow, @args);