@@ -81,18 +81,14 @@ inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback(
|
81 | 81 | const v8::Local<v8::Name> symbol, |
82 | 82 | int argc, |
83 | 83 | v8::Local<v8::Value>* argv) { |
84 | | - v8::Local<v8::Value> cb_v = object()->Get(symbol); |
85 | | -CHECK(cb_v->IsFunction()); |
86 | | -return MakeCallback(cb_v.As<v8::Function>(), argc, argv); |
87 | | -} |
88 | | - |
89 | | - |
90 | | -inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback( |
91 | | -uint32_t index, |
92 | | -int argc, |
93 | | - v8::Local<v8::Value>* argv) { |
94 | | - v8::Local<v8::Value> cb_v = object()->Get(index); |
95 | | -CHECK(cb_v->IsFunction()); |
| 84 | + v8::Local<v8::Value> cb_v; |
| 85 | +if (!object()->Get(env()->context(), symbol).ToLocal(&cb_v)) |
| 86 | +return v8::MaybeLocal<v8::Value>(); |
| 87 | +if (!cb_v->IsFunction()) { |
| 88 | +// TODO(addaleax): We should throw an error here to fulfill the |
| 89 | +// `MaybeLocal<>` API contract. |
| 90 | +return v8::MaybeLocal<v8::Value>(); |
| 91 | + } |
96 | 92 | return MakeCallback(cb_v.As<v8::Function>(), argc, argv); |
97 | 93 | } |
98 | 94 | |
|