more fast & accurate handling timeout by using PriorityQueue