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());

`