 	 * The first argument fulfills the promise, the second argument rejects it.
 	 * We can call these functions, once our operation is completed.
 	###
-	constructor: (executor) ->
+	constructor: (executor, _isRunImmediately) ->
 		@_value = null
 		@_handlers = []
 
-		run @, executor
+		# "_isRunImmediately" is only used by then internally.
+		run @, executor, _isRunImmediately
 
 	###*
 	 * Appends fulfillment and rejection handlers to the promise,

		(fn) ->
			process.nextTick fn

	run = (self, executor) -> nextTick ->
		executor genTrigger(self, $resolved),
			genTrigger(self, $rejected)
		return

	# Push new handler to current promise.


		new Promise (resolve, reject) ->
			addHandler self, onFulfilled, onRejected, resolve, reject
		, true

# ********************** Private **********************

