@ConditionBlock
  public void evaluate(Runnable block) {
    try {
      block.run();
    } catch (Throwable t) {
      exceptions.add(t);
      wakeUp();
    }
    latch.countDown();
  }
Evaluates the specified block, which is expected to contain
one or more explicit conditions (i.e. assert statements).
Any caught exception will be rethrown from <tt>await()</tt>.

@param block the code block to evaluate
spock-core/src/main/java/spock/util/concurrent/AsyncConditions.java