In reply to ben@SystemVerilog.us:
DId an update above.
This is untested, but it looks OK now.
Tasks are fired upon a change in reset.
Each task forks 2 processes, one is a fixed delay during which a clk event may occur and may update a count.
Any of the processes, timeout or clocking event, conclude the fork and an immediate assertion check the count.
The while repeats the test until a change in the reset, upon which new tasks are fired.