#4 also pass event to promise and callback
#4 raised version