@@ -201,15 +201,15 @@ PromiseWrap* PromiseWrap::New(Environment* env,
201
201
Local<Promise> promise,
202
202
PromiseWrap* parent_wrap,
203
203
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 ()));
210
210
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);
213
213
}
214
214
215
215
void PromiseWrap::getIsChainedPromise (Local<String> property,
@@ -242,6 +242,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
242
242
PromiseWrap* parent_wrap = extractPromiseWrap (parent_promise);
243
243
if (parent_wrap == nullptr ) {
244
244
parent_wrap = PromiseWrap::New (env, parent_promise, nullptr , true );
245
+ if (parent_wrap == nullptr ) return ;
245
246
}
246
247
247
248
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope (parent_wrap);
@@ -251,7 +252,8 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
251
252
}
252
253
}
253
254
254
- CHECK_NOT_NULL (wrap);
255
+ if (wrap == nullptr ) return ;
256
+
255
257
if (type == PromiseHookType::kBefore ) {
256
258
env->async_hooks ()->push_async_ids (
257
259
wrap->get_async_id (), wrap->get_trigger_async_id ());
0 commit comments