Timed() is calling both coroutine.yield() and os.pullEvent() - stick with one or the other. If you don't know the difference between the two (or more importantly, the similarities), read section four
here. You may be better off reading the whole post, but that section onwards is essential to plugging the holes in your code.
Timed() also tries to resume the functions task1() / task2() / task3() - you can only resume coroutines!
You need to look into
localised variables - your tTask table is a mistake. When newSleep is called, it should store its timer ID in a
local variable, meaning that multiple coroutines can call the function at once without causing conflicts within the global scope.