Do you really need selfTimer and selfTimeout?  The names are so similar that you need  comments here to explain what each is for and how they are different. Otherwise the code will be confusing.