Skip to content

Commit 5556975

Browse files
committed
src: pass along errors from PromiseWrap instantiation
PR-URL: #25734 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Gus Caplan <[email protected]>
1 parent 1a37fd6 commit 5556975

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/async_wrap.cc

+11-9
Original file line numberDiff line numberDiff line change
@@ -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

215215
void 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

Comments
 (0)