handleFdEvent and handleTimerEvent now return a bool
ensure timer events are triggered on the same thread
added test for timer handling