Lines Matching defs:promise

109 #include "src/objects/promise-inl.h"
5397 Handle<Object> JSPromise::Fulfill(Handle<JSPromise> promise,
5399 Isolate* const isolate = promise->GetIsolate();
5404 PromiseHookType::kResolve, promise,
5409 // 1. Assert: The value of promise.[[PromiseState]] is "pending".
5410 CHECK_EQ(Promise::kPending, promise->status());
5412 // 2. Let reactions be promise.[[PromiseFulfillReactions]].
5413 Handle<Object> reactions(promise->reactions(), isolate);
5415 // 3. Set promise.[[PromiseResult]] to value.
5416 // 4. Set promise.[[PromiseFulfillReactions]] to undefined.
5417 // 5. Set promise.[[PromiseRejectReactions]] to undefined.
5418 promise->set_reactions_or_result(*value);
5420 // 6. Set promise.[[PromiseState]] to "fulfilled".
5421 promise->set_status(Promise::kFulfilled);
5428 static void MoveMessageToPromise(Isolate* isolate, Handle<JSPromise> promise) {
5433 Object::SetProperty(isolate, promise, key, message, StoreOrigin::kMaybeKeyed,
5437 // The message object for a rejected promise was only stored for this purpose.
5443 Handle<Object> JSPromise::Reject(Handle<JSPromise> promise,
5445 Isolate* const isolate = promise->GetIsolate();
5449 if (isolate->debug()->is_active()) MoveMessageToPromise(isolate, promise);
5451 if (debug_event) isolate->debug()->OnPromiseReject(promise, reason);
5452 isolate->RunAllPromiseHooks(PromiseHookType::kResolve, promise,
5455 // 1. Assert: The value of promise.[[PromiseState]] is "pending".
5456 CHECK_EQ(Promise::kPending, promise->status());
5458 // 2. Let reactions be promise.[[PromiseRejectReactions]].
5459 Handle<Object> reactions(promise->reactions(), isolate);
5461 // 3. Set promise.[[PromiseResult]] to reason.
5462 // 4. Set promise.[[PromiseFulfillReactions]] to undefined.
5463 // 5. Set promise.[[PromiseRejectReactions]] to undefined.
5464 promise->set_reactions_or_result(*reason);
5466 // 6. Set promise.[[PromiseState]] to "rejected".
5467 promise->set_status(Promise::kRejected);
5469 // 7. If promise.[[PromiseIsHandled]] is false, perform
5470 // HostPromiseRejectionTracker(promise, "reject").
5471 if (!promise->has_handler()) {
5472 isolate->ReportPromiseReject(promise, reason, kPromiseRejectWithNoHandler);
5480 // https://tc39.es/ecma262/#sec-promise-resolve-functions
5482 MaybeHandle<Object> JSPromise::Resolve(Handle<JSPromise> promise,
5484 Isolate* const isolate = promise->GetIsolate();
5488 isolate->RunPromiseHook(PromiseHookType::kResolve, promise,
5491 // 7. If SameValue(resolution, promise) is true, then
5492 if (promise.is_identical_to(resolution)) {
5496 // b. Return RejectPromise(promise, selfResolutionError).
5497 return Reject(promise, self_resolution_error);
5502 // a. Return FulfillPromise(promise, resolution).
5503 return Fulfill(promise, resolution);
5537 // a. Return RejectPromise(promise, then.[[Value]]).
5540 return Reject(promise, reason, false);
5546 // a. Return FulfillPromise(promise, resolution).
5547 return Fulfill(promise, resolution);
5550 // 13. Let job be NewPromiseResolveThenableJob(promise, resolution,
5560 promise, Handle<JSReceiver>::cast(resolution),
5563 // Mark the dependency of the new {promise} on the {resolution}.
5566 promise)