diff --git a/node.gyp b/node.gyp
index daaf34c8c67a11..d97004c8e148be 100644
--- a/node.gyp
+++ b/node.gyp
@@ -481,6 +481,7 @@
         '-Wno-unused-parameter',
         '-Werror=undefined-inline',
         '-Werror=extra-semi',
+        '-Werror=ctad-maybe-unsupported',
       ],
     },
 
diff --git a/node.gypi b/node.gypi
index c61e9b170a05c9..7ae62bd7e7134a 100644
--- a/node.gypi
+++ b/node.gypi
@@ -27,7 +27,11 @@
 
   'conditions': [
     [ 'clang==1', {
-      'cflags': [ '-Werror=undefined-inline', '-Werror=extra-semi']
+      'cflags': [
+        '-Werror=undefined-inline',
+        '-Werror=extra-semi',
+        '-Werror=ctad-maybe-unsupported',
+      ],
     }],
     [ '"<(_type)"=="executable"', {
       'msvs_settings': {
diff --git a/src/quic/session.cc b/src/quic/session.cc
index b98ce4a132af60..4323c9268fdac2 100644
--- a/src/quic/session.cc
+++ b/src/quic/session.cc
@@ -1531,7 +1531,7 @@ void Session::EmitDatagram(Store&& datagram, DatagramReceivedFlags flag) {
   DCHECK(!is_destroyed());
   if (!env()->can_call_into_js()) return;
 
-  CallbackScope cbv_scope(this);
+  CallbackScope<Session> cbv_scope(this);
 
   Local<Value> argv[] = {datagram.ToUint8Array(env()),
                          v8::Boolean::New(env()->isolate(), flag.early)};