diff --git a/lib/modules/Protocols.pmod/DNS.pmod b/lib/modules/Protocols.pmod/DNS.pmod
index 3865d201a47f3425fc2e110e9af97fb329d36d1d..b5c3879185b489a1b0f2c7a9c206b512c223a1fb 100644
--- a/lib/modules/Protocols.pmod/DNS.pmod
+++ b/lib/modules/Protocols.pmod/DNS.pmod
@@ -1789,6 +1789,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);
@@ -1850,6 +1851,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)) {
@@ -2023,6 +2025,7 @@ class async_tcp_client
 
     void connectedcb(int ok)
     {
+      if (!callback) return;
       if (!ok) {callback(domain, 0, @args); return;}
       sock->set_nonblocking(readcb, writecb, closecb);
       writebuf=sprintf("%2H",req);