 	then: (onFulfilled, onRejected) ->
 		self = @
 
-		new Promise (resolve, reject) ->
+		newPromise = @_thenOffset + 4
+
+		@_handlers[newPromise] = new Promise (resolve, reject) ->
 			addHandler self, onFulfilled, onRejected, resolve, reject
 
 	###*


	# Push new handler to current promise.
	addHandler = (self, onFulfilled, onRejected, resolve, reject) ->
		offset = self._thenCount * 4

		self._handlers[offset] = onFulfilled
		self._handlers[offset + 1] = onRejected
		self._handlers[offset + 2] = resolve
		self._handlers[offset + 3] = reject
		self._thenCount++

		if self._state != $pending
			chainHandler self, offset

		self._value = value

		offset = 0

		while offset < self._thenOffset
			chainHandler self, offset

			offset += $groupNum

		return

