 
 	# Push new handler to current promise.
 	addHandler = (self, onFulfilled, onRejected, resolve, reject) ->
-		offset = self._thenCount * 4
-
+		offset = self._thenOffset
 		self._handlers[offset] = onFulfilled
 		self._handlers[offset + 1] = onRejected
 		self._handlers[offset + 2] = resolve
 		self._handlers[offset + 3] = reject
-		self._thenCount++
+		self._thenOffset += $groupNum
 
 		if self._state != $pending
 			chainHandler self, offset

		self._value = value

		offset = 0
		len = self._thenCount * 4

		while offset < len
			chainHandler self, offset

			offset += 4

		return


				self._handlers[offset + 3] e
				return

			# Prevent circular chain.
			if x == self._handlers[offset + 4]
				return x._handlers[offset + 1]? new TypeError $resolveSelf

			if isThenable x
				# If the promise is a Yaku instance
