timer support coroutine and impl changed to priority_queue