Spelling fix: timout => timeout
Keep only WeakReference to promise in TimerTask;

Add additional documentation.