promise + tests
do not create new object to store listeners, but store all tokens in array