summaryrefslogtreecommitdiff
path: root/src/async_wrap-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/async_wrap-inl.h')
-rw-r--r--src/async_wrap-inl.h20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/async_wrap-inl.h b/src/async_wrap-inl.h
index 5763b17aa0..4405bb3a9b 100644
--- a/src/async_wrap-inl.h
+++ b/src/async_wrap-inl.h
@@ -81,18 +81,14 @@ inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback(
const v8::Local<v8::Name> symbol,
int argc,
v8::Local<v8::Value>* argv) {
- v8::Local<v8::Value> cb_v = object()->Get(symbol);
- CHECK(cb_v->IsFunction());
- return MakeCallback(cb_v.As<v8::Function>(), argc, argv);
-}
-
-
-inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback(
- uint32_t index,
- int argc,
- v8::Local<v8::Value>* argv) {
- v8::Local<v8::Value> cb_v = object()->Get(index);
- CHECK(cb_v->IsFunction());
+ v8::Local<v8::Value> cb_v;
+ if (!object()->Get(env()->context(), symbol).ToLocal(&cb_v))
+ return v8::MaybeLocal<v8::Value>();
+ if (!cb_v->IsFunction()) {
+ // TODO(addaleax): We should throw an error here to fulfill the
+ // `MaybeLocal<>` API contract.
+ return v8::MaybeLocal<v8::Value>();
+ }
return MakeCallback(cb_v.As<v8::Function>(), argc, argv);
}