waitfor() best practices

I have a general question regarding DC programming. If you have a guard condition, is it better to wrap the costate in an if, or put a waitfor() in the costate?

Example:

  1. if (guard_condition)
    costate {
    }

  2. costate {
    waitfor( guard_condition );
    }

Thanks