• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import {
2  invokeCallback,
3  subscribe,
4  FULFILLED,
5  REJECTED,
6  noop,
7  makePromise,
8  PROMISE_ID
9} from './-internal';
10
11import { asap } from './asap';
12
13export default function then(onFulfillment, onRejection) {
14  const parent = this;
15
16  const child = new this.constructor(noop);
17
18  if (child[PROMISE_ID] === undefined) {
19    makePromise(child);
20  }
21
22  const { _state } = parent;
23
24  if (_state) {
25    const callback = arguments[_state - 1];
26    asap(() => invokeCallback(_state, child, callback, parent._result));
27  } else {
28    subscribe(parent, child, onFulfillment, onRejection);
29  }
30
31  return child;
32}
33