Skip to content

Commit 03fb817

Browse files
danbevMylesBorins
authored andcommitted
src: add extractPromiseWrap function
Currently PromiseHook extracts the PromiseWrap from a Local<Promise> in two places. This commit extracts that code into a function instead. PR-URL: #19340 Reviewed-By: James M Snell <[email protected]>
1 parent 0c9577e commit 03fb817

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

src/async_wrap.cc

+9-12
Original file line numberDiff line numberDiff line change
@@ -277,31 +277,28 @@ void PromiseWrap::getIsChainedPromise(Local<String> property,
277277
info.Holder()->GetInternalField(kIsChainedPromiseField));
278278
}
279279

280-
static void PromiseHook(PromiseHookType type, Local<Promise> promise,
281-
Local<Value> parent, void* arg) {
282-
Environment* env = static_cast<Environment*>(arg);
280+
static PromiseWrap* extractPromiseWrap(Local<Promise> promise) {
283281
Local<Value> resource_object_value = promise->GetInternalField(0);
284-
PromiseWrap* wrap = nullptr;
285282
if (resource_object_value->IsObject()) {
286-
Local<Object> resource_object = resource_object_value.As<Object>();
287-
wrap = Unwrap<PromiseWrap>(resource_object);
283+
return Unwrap<PromiseWrap>(resource_object_value.As<Object>());
288284
}
285+
return nullptr;
286+
}
289287

288+
static void PromiseHook(PromiseHookType type, Local<Promise> promise,
289+
Local<Value> parent, void* arg) {
290+
Environment* env = static_cast<Environment*>(arg);
291+
PromiseWrap* wrap = extractPromiseWrap(promise);
290292
if (type == PromiseHookType::kInit || wrap == nullptr) {
291293
bool silent = type != PromiseHookType::kInit;
292-
PromiseWrap* parent_wrap = nullptr;
293294

294295
// set parent promise's async Id as this promise's triggerAsyncId
295296
if (parent->IsPromise()) {
296297
// parent promise exists, current promise
297298
// is a chained promise, so we set parent promise's id as
298299
// current promise's triggerAsyncId
299300
Local<Promise> parent_promise = parent.As<Promise>();
300-
Local<Value> parent_resource = parent_promise->GetInternalField(0);
301-
if (parent_resource->IsObject()) {
302-
parent_wrap = Unwrap<PromiseWrap>(parent_resource.As<Object>());
303-
}
304-
301+
PromiseWrap* parent_wrap = extractPromiseWrap(parent_promise);
305302
if (parent_wrap == nullptr) {
306303
parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true);
307304
}

0 commit comments

Comments
 (0)