fix callback handler cleanup

Make sure all handler instances are destroyed after completion. This
allows code to hold shared pointer to easy object inside handler it's
own completion functor.