Fix for unfulfilled timeout (#86)

This fix will also make sure that run() is called only when needed - by clearing the old timeout when a newer earlier timeout is set.

Kudos to @pashasadri as he suggested this fix.