summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/async_wrap.cc23
-rw-r--r--src/async_wrap.h7
2 files changed, 12 insertions, 18 deletions
diff --git a/src/async_wrap.cc b/src/async_wrap.cc
index 404873c4d2..90b532d73b 100644
--- a/src/async_wrap.cc
+++ b/src/async_wrap.cc
@@ -228,7 +228,7 @@ void AsyncWrap::EmitAfter(Environment* env, double async_id) {
class PromiseWrap : public AsyncWrap {
public:
PromiseWrap(Environment* env, Local<Object> object, bool silent)
- : AsyncWrap(env, object, silent) {
+ : AsyncWrap(env, object, PROVIDER_PROMISE, -1, silent) {
MakeWeak(this);
}
size_t self_size() const override { return sizeof(*this); }
@@ -582,32 +582,23 @@ AsyncWrap::AsyncWrap(Environment* env,
Local<Object> object,
ProviderType provider,
double execution_async_id)
- : BaseObject(env, object),
- provider_type_(provider) {
- CHECK_NE(provider, PROVIDER_NONE);
- CHECK_GE(object->InternalFieldCount(), 1);
+ : AsyncWrap(env, object, provider, execution_async_id, false) {}
- // Shift provider value over to prevent id collision.
- persistent().SetWrapperClassId(NODE_ASYNC_ID_OFFSET + provider);
-
- // Use AsyncReset() call to execute the init() callbacks.
- AsyncReset(execution_async_id);
-}
-
-
-// This is specifically used by the PromiseWrap constructor.
AsyncWrap::AsyncWrap(Environment* env,
Local<Object> object,
+ ProviderType provider,
+ double execution_async_id,
bool silent)
: BaseObject(env, object),
- provider_type_(PROVIDER_PROMISE) {
+ provider_type_(provider) {
+ CHECK_NE(provider, PROVIDER_NONE);
CHECK_GE(object->InternalFieldCount(), 1);
// Shift provider value over to prevent id collision.
persistent().SetWrapperClassId(NODE_ASYNC_ID_OFFSET + provider_type_);
// Use AsyncReset() call to execute the init() callbacks.
- AsyncReset(-1, silent);
+ AsyncReset(execution_async_id, silent);
}
diff --git a/src/async_wrap.h b/src/async_wrap.h
index f0689d32f3..baaebb2a8b 100644
--- a/src/async_wrap.h
+++ b/src/async_wrap.h
@@ -185,8 +185,11 @@ class AsyncWrap : public BaseObject {
private:
friend class PromiseWrap;
- // This is specifically used by the PromiseWrap constructor.
- AsyncWrap(Environment* env, v8::Local<v8::Object> promise, bool silent);
+ AsyncWrap(Environment* env,
+ v8::Local<v8::Object> promise,
+ ProviderType provider,
+ double execution_async_id,
+ bool silent);
inline AsyncWrap();
const ProviderType provider_type_;
// Because the values may be Reset(), cannot be made const.