@@ -201,15 +201,15 @@ PromiseWrap* PromiseWrap::New(Environment* env,
201201 Local<Promise> promise,
202202 PromiseWrap* parent_wrap,
203203 bool silent) {
204- Local<Object> object = env-> promise_wrap_template ()
205- -> NewInstance (env->context ()).ToLocalChecked ();
206- object-> SetInternalField (PromiseWrap:: kIsChainedPromiseField ,
207- parent_wrap != nullptr ?
208- v8::True (env->isolate ()) :
209- v8::False (env->isolate ()));
204+ Local<Object> obj;
205+ if (!env-> promise_wrap_template ()-> NewInstance (env->context ()).ToLocal (&obj))
206+ return nullptr ;
207+ obj-> SetInternalField (PromiseWrap:: kIsChainedPromiseField ,
208+ parent_wrap != nullptr ? v8::True (env->isolate ())
209+ : v8::False (env->isolate ()));
210210 CHECK_EQ (promise->GetAlignedPointerFromInternalField (0 ), nullptr );
211- promise->SetInternalField (0 , object );
212- return new PromiseWrap (env, object , silent);
211+ promise->SetInternalField (0 , obj );
212+ return new PromiseWrap (env, obj , silent);
213213}
214214
215215void PromiseWrap::getIsChainedPromise (Local<String> property,
@@ -242,6 +242,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
242242 PromiseWrap* parent_wrap = extractPromiseWrap (parent_promise);
243243 if (parent_wrap == nullptr ) {
244244 parent_wrap = PromiseWrap::New (env, parent_promise, nullptr , true );
245+ if (parent_wrap == nullptr ) return ;
245246 }
246247
247248 AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope (parent_wrap);
@@ -251,7 +252,8 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
251252 }
252253 }
253254
254- CHECK_NOT_NULL (wrap);
255+ if (wrap == nullptr ) return ;
256+
255257 if (type == PromiseHookType::kBefore ) {
256258 env->async_hooks ()->push_async_ids (
257259 wrap->get_async_id (), wrap->get_trigger_async_id ());
0 commit comments