diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js
index c2c5f1c46f24ce..d98014c368202c 100644
--- a/lib/internal/async_hooks.js
+++ b/lib/internal/async_hooks.js
@@ -109,18 +109,18 @@ function useDomainTrampoline(fn) {
 }
 
 function callbackTrampoline(asyncId, cb, ...args) {
-  if (asyncId && hasHooks(kBefore))
+  if (asyncId !== 0 && hasHooks(kBefore))
     emitBeforeNative(asyncId);
 
   let result;
-  if (typeof domain_cb === 'function') {
+  if (asyncId === 0 && typeof domain_cb === 'function') {
     ArrayPrototypeUnshift(args, cb);
     result = ReflectApply(domain_cb, this, args);
   } else {
     result = ReflectApply(cb, this, args);
   }
 
-  if (asyncId && hasHooks(kAfter))
+  if (asyncId !== 0 && hasHooks(kAfter))
     emitAfterNative(asyncId);
 
   return result;
diff --git a/test/parallel/test-domain-http-server.js b/test/parallel/test-domain-http-server.js
index 6168566334a11d..2f0c757a99df35 100644
--- a/test/parallel/test-domain-http-server.js
+++ b/test/parallel/test-domain-http-server.js
@@ -20,12 +20,14 @@
 // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 'use strict';
-require('../common');
+const common = require('../common');
 const domain = require('domain');
 const http = require('http');
 const assert = require('assert');
 const debug = require('util').debuglog('test');
 
+process.on('warning', common.mustNotCall());
+
 const objects = { foo: 'bar', baz: {}, num: 42, arr: [1, 2, 3] };
 objects.baz.asdf = objects;
 
diff --git a/test/parallel/test-domain-implicit-binding.js b/test/parallel/test-domain-implicit-binding.js
index 15f6685df93b7b..9f119a420368f0 100644
--- a/test/parallel/test-domain-implicit-binding.js
+++ b/test/parallel/test-domain-implicit-binding.js
@@ -6,6 +6,8 @@ const domain = require('domain');
 const fs = require('fs');
 const isEnumerable = Function.call.bind(Object.prototype.propertyIsEnumerable);
 
+process.on('warning', common.mustNotCall());
+
 {
   const d = new domain.Domain();
 
diff --git a/test/parallel/test-domain-implicit-fs.js b/test/parallel/test-domain-implicit-fs.js
index d5a6e79bc90734..c785ff75c67656 100644
--- a/test/parallel/test-domain-implicit-fs.js
+++ b/test/parallel/test-domain-implicit-fs.js
@@ -26,6 +26,8 @@ const common = require('../common');
 const assert = require('assert');
 const domain = require('domain');
 
+process.on('warning', common.mustNotCall());
+
 const d = new domain.Domain();
 
 d.on('error', common.mustCall(function(er) {
diff --git a/test/parallel/test-domain-multi.js b/test/parallel/test-domain-multi.js
index 63701150f8c331..072f8e86bb077c 100644
--- a/test/parallel/test-domain-multi.js
+++ b/test/parallel/test-domain-multi.js
@@ -26,6 +26,8 @@ const common = require('../common');
 const domain = require('domain');
 const http = require('http');
 
+process.on('warning', common.mustNotCall());
+
 const a = domain.create();
 a.enter(); // This will be our "root" domain
 
diff --git a/test/parallel/test-domain-promise.js b/test/parallel/test-domain-promise.js
index 704092522357fd..2a127f3d40272b 100644
--- a/test/parallel/test-domain-promise.js
+++ b/test/parallel/test-domain-promise.js
@@ -5,6 +5,8 @@ const domain = require('domain');
 const fs = require('fs');
 const vm = require('vm');
 
+process.on('warning', common.mustNotCall());
+
 {
   const d = domain.create();