How to instantly restart a coroutine?

I was wondering to know how to make a coroutine instantly stop and run again (restart).

For example: I’m running a coroutine that smoothly turns alpha from 255 to 0.
Before it ends, for example, in the iteration 125, some action happens and this value goes to 255 again and start fading alpha from 255 to 0 from the start. Keep in mind this coroutine will instantly stop just in the time an event occurs, and will start again, in our case from 255 and will fade to 0.

I’m trying to be the clearer I can, if I wasn’t, ask me and I’ll try to explain again.

Thank in advice and sorry for my bad English.

First, why you using co-routine of fading affect.?
the simplest way is to use iTween.Value to to achieve color fade effect.

public float fromValue = 0;
 
 private IEnumerator valueToExample()
 {
      iTween.ValueTo( "from", fromValue, "to", 10, "onupdatetarget", gameObject, "onupdate", updateFromValue, "time", 5, "easetype", iTween.EaseType.easeOutExpo );
 }
 
 public void updateFromValue( float newValue )
 {
      fromValue = newValue;
      Debug.Log( "My Value that is tweening: " + fromValue );
 }

Ulternate Way :

Call IEnumerator like below which can be stopped and start again.

void Start () 
	{
		StopCoroutine ("fadeTo");
		StartCoroutine ("fadeTo");

	}

	IEnumerator fadeTo()
	{

		//some code goes here
		yield return new WaitForSeconds(1F);
	}