Good idea, and clean and simple implementation! I'm not sure if a timer is a great fit for the idea... because you can have "already failed" (not enough time left to finish) and not really know it.