Sequence problem inside of a loop.(solved)

Hello,
I have spend 10 hours trying to figue out what is going on without success. I hope someone can help me with this.
Basically I have 2 vector of sprites. one for the bullets called destructorsSprites and other one for the enemies called destroyedSprites. This vectors are filled when the player shoots a bullet and when enemies appear on screen. So what I want is to delete the enemy from the vector if a collision occurs.
The following code works as expected:

void CollisionSystem::runCollisions(cocos2d::Vector<cocos2d::Sprite*> destructorsSprites, 
									cocos2d::Vector<cocos2d::Sprite*> destroyedSprites)
{

	if (!destructorsSprites.size()) 
		return;

	for (auto destructorSprite: destructorsSprites)
	{  
		Rect destructorSpriteBBox = destructorSprite->getBoundingBox();
		for (auto destroyedSprite: destroyedSprites)
		{
			if (destructorSpriteBBox.intersectsRect(destroyedSprite->getBoundingBox()))
			{
				CCLOG("*** AAA ***");
				auto removeDestroyedSpriteFunc =  CallFuncN::create(CC_CALLBACK_1(CollisionSystem::_removeDestroyedSpriteFromMemory, this));
				auto sequence = Sequence::create(removeDestroyedSpriteFunc, nullptr);
				destroyedSprite->runAction(sequence);
				if (!_collisionSound.empty())
					AudioEngine::play2d(collisionSound());	
				blink->autorelease();
			} 
		}
	}
}

// more code in beween and this is the remove method
// Duplicate code. Same as bullet
void CollisionSystem::_removeDestroyedSpriteFromMemory(Ref* sender)
{
	Sprite* destroyedSprite = dynamic_cast<Sprite*>(sender);
	GameGlobals::centinelEnemies.eraseObject(destroyedSprite);	// removes from vector
	destroyedSprite->removeFromParentAndCleanup(true);			// removes from scene
 }

the code above is called in the update() of the game and work as expected. All good.
The CCLOG print out is printed once, which is what I expect, since the moment ther is collision the enemy sprite is deleted and if statetement is skipped.

Now this is what drove me crazy. If I take that same code and add an extra action like blink as shown below, the CCLOG print out is printed over and over again, around 15 times. Why is this happening?
All did is add an extra action to the sequence, and now the if statement is traversed over and over.

void CollisionSystem::runCollisions(cocos2d::Vector<cocos2d::Sprite*> destructorsSprites, 
									cocos2d::Vector<cocos2d::Sprite*> destroyedSprites)
{

	if (!destructorsSprites.size()) 
		return;

	for (auto destructorSprite: destructorsSprites)
	{  
		Rect destructorSpriteBBox = destructorSprite->getBoundingBox();
		for (auto destroyedSprite: destroyedSprites)
		{
			if (destructorSpriteBBox.intersectsRect(destroyedSprite->getBoundingBox()))
			{
				CCLOG("*** AAA ***");
				auto removeDestroyedSpriteFunc =  CallFuncN::create(CC_CALLBACK_1(CollisionSystem::_removeDestroyedSpriteFromMemory, this));
				auto blink = Blink::create(2, 10);
				blink->retain();
				auto sequence = Sequence::create(blink, removeDestroyedSpriteFunc, nullptr);
				destroyedSprite->runAction(sequence);
				if (!_collisionSound.empty())
					AudioEngine::play2d(collisionSound());	
				blink->autorelease();
			} 
		}
	}
}

Thanks,
R

Okey,
I kept testing different ways and I think I solved it by doing this.

for (auto destructorSprite: destructorsSprites)
	{  
		Rect destructorSpriteBBox = destructorSprite->getBoundingBox();
		for (auto destroyedSprite: destroyedSprites)
		{
			if (destructorSpriteBBox.intersectsRect(destroyedSprite->getBoundingBox()))
			{
				destroyedSprite->stopAllActions();
				auto sequence = Sequence::create(_destroyedCollisionAnimate, RemoveSelf::create(), nullptr);
				destroyedSprite->runAction(sequence);
				GameGlobals::centinelEnemies.eraseObject(destroyedSprite);	// removes from vector
				if (!_collisionSound.empty())
					AudioEngine::play2d(collisionSound());
			} 
		}
	}

That was a productive day XD…any way, if you have other was to deal with running animations before dying and removing a sprte let me know.
The one I found seems so to work pretty well.

Cheers,
R