 		p._state = state
 		p._value = value
 
+		if state == $rejected and
+		p[$prePromise] and p[$prePromise]._state == $resolved
+			scheduleUnhandledRejection p
+
 		i = 0
 		len = p._pCount
-
-		if state == $rejected and not len
-			if isLongStackTrace
-				p[$settlerStack] = genTraceInfo()
-
-			scheduleUnhandledRejection p
 
 		# 2.2.2
 		# 2.2.3

		if isFunction onRejected
			p2._onRejected = onRejected

		p1[$hasUnhandledRejection] = false

		# 2.2.6
		if p1._state == $pending

	###
	constructor: (executor) ->
		if isLongStackTrace
			@[$promiseStack] = genTraceInfo()

		return if executor == $noop

