diff --git a/lib/modules/Protocols.pmod/DNS.pmod b/lib/modules/Protocols.pmod/DNS.pmod
index 9cadf06e0ae14817a6eac549bf287f2636b5e46d..61dadd0cd054c6f5d83ab5d35246f0e5db05099b 100644
--- a/lib/modules/Protocols.pmod/DNS.pmod
+++ b/lib/modules/Protocols.pmod/DNS.pmod
@@ -1950,6 +1950,7 @@ class async_client
 		   function(string,mapping,mixed...:void) callback,
 		   mixed ... args)
   {
+    if (!callback) return UNDEFINED;
     for(int e=next_client ? 100 : 256;e>=0;e--)
     {
       int lid = random(65536);
@@ -2006,6 +2007,7 @@ class async_client
 					function callback,
 					mixed ... args)
   {
+    if (!callback) return UNDEFINED;
     if(!answer || !answer->an || !sizeof(answer->an))
     {
       if(multi == -1 || multi >= sizeof(domains)) {
@@ -2189,6 +2191,7 @@ class async_tcp_client
 
     protected void connectedcb(int ok)
     {
+      if (!callback) return;
       if (!ok) {callback(domain, 0, @args); return;}
       sock->set_nonblocking(readcb, writecb, closecb);
       writebuf=sprintf("%2H",req);