src: pass along errors from PromiseWrap instantiation · nodejs/node@5556975 (original) (raw)
`@@ -201,15 +201,15 @@ PromiseWrap* PromiseWrap::New(Environment* env,
`
201
201
` Local promise,
`
202
202
` PromiseWrap* parent_wrap,
`
203
203
`bool silent) {
`
204
``
`-
Local 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 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 property,
`
`@@ -242,6 +242,7 @@ static void PromiseHook(PromiseHookType type, Local 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,
`
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());
`