Add promises
and make eventEmitters emit newListener events
Make eventEmitter run handlers in the correct thread
Add support for threads to wait for promises
Update todo list