@@ -204,16 +204,16 @@ PromiseWrap* PromiseWrap::New(Environment* env,
204
204
Local<Promise> promise,
205
205
PromiseWrap* parent_wrap,
206
206
bool silent) {
207
- Local<Object> object = env-> promise_wrap_template ()
208
- -> NewInstance (env->context ()).ToLocalChecked ();
209
- object-> SetInternalField (PromiseWrap:: kPromiseField , promise) ;
210
- object ->SetInternalField (PromiseWrap::kIsChainedPromiseField ,
211
- parent_wrap != nullptr ?
212
- v8::True (env->isolate ()) :
213
- v8::False (env->isolate ()));
207
+ Local<Object> obj;
208
+ if (!env-> promise_wrap_template ()-> NewInstance (env->context ()).ToLocal (&obj))
209
+ return nullptr ;
210
+ obj ->SetInternalField (PromiseWrap::kPromiseField , promise);
211
+ obj-> SetInternalField (PromiseWrap:: kIsChainedPromiseField ,
212
+ parent_wrap != nullptr ? v8::True (env->isolate ())
213
+ : v8::False (env->isolate ()));
214
214
CHECK_EQ (promise->GetAlignedPointerFromInternalField (0 ), nullptr );
215
- promise->SetInternalField (0 , object );
216
- return new PromiseWrap (env, object , silent);
215
+ promise->SetInternalField (0 , obj );
216
+ return new PromiseWrap (env, obj , silent);
217
217
}
218
218
219
219
void PromiseWrap::GetPromise (Local<String> property,
@@ -251,6 +251,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
251
251
PromiseWrap* parent_wrap = extractPromiseWrap (parent_promise);
252
252
if (parent_wrap == nullptr ) {
253
253
parent_wrap = PromiseWrap::New (env, parent_promise, nullptr , true );
254
+ if (parent_wrap == nullptr ) return ;
254
255
}
255
256
256
257
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope (parent_wrap);
@@ -260,7 +261,8 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
260
261
}
261
262
}
262
263
263
- CHECK_NOT_NULL (wrap);
264
+ if (wrap == nullptr ) return ;
265
+
264
266
if (type == PromiseHookType::kBefore ) {
265
267
env->async_hooks ()->push_async_ids (
266
268
wrap->get_async_id (), wrap->get_trigger_async_id ());
0 commit comments