diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc
index 405b70343f761e..33dd4dbdacf6a3 100644
--- a/src/tty_wrap.cc
+++ b/src/tty_wrap.cc
@@ -32,6 +32,7 @@ namespace node {
 
 using v8::Array;
 using v8::Context;
+using v8::Function;
 using v8::FunctionCallbackInfo;
 using v8::FunctionTemplate;
 using v8::Integer;
@@ -40,7 +41,6 @@ using v8::Object;
 using v8::String;
 using v8::Value;
 
-
 void TTYWrap::Initialize(Local<Object> target,
                          Local<Value> unused,
                          Local<Context> context,
@@ -61,10 +61,11 @@ void TTYWrap::Initialize(Local<Object> target,
   env->SetMethodNoSideEffect(target, "isTTY", IsTTY);
   env->SetMethodNoSideEffect(target, "guessHandleType", GuessHandleType);
 
-  target->Set(env->context(),
-              ttyString,
-              t->GetFunction(env->context()).ToLocalChecked()).FromJust();
-  env->set_tty_constructor_template(t);
+  Local<Value> func;
+  if (t->GetFunction(env->context()).ToLocal(&func) &&
+      target->Set(env->context(), ttyString, func).IsJust()) {
+    env->set_tty_constructor_template(t);
+  }
 }
 
 
diff --git a/test/parallel/test-ttywrap-stack.js b/test/parallel/test-ttywrap-stack.js
new file mode 100644
index 00000000000000..b2ad69b1b2ecdc
--- /dev/null
+++ b/test/parallel/test-ttywrap-stack.js
@@ -0,0 +1,20 @@
+'use strict';
+const common = require('../common');
+
+// This test ensures that console.log
+// will not crash the process if there
+// is not enough space on the V8 stack
+
+const done = common.mustCall(() => {});
+
+async function test() {
+  await test();
+}
+
+(async () => {
+  try {
+    await test();
+  } catch (err) {
+    console.log(err);
+  }
+})().then(done, done);