reintroduced callback handler, as the previous approach was breaking chaining
this now returns a promise though, so it can be composed
fixed a small bug, wrong this reference