refactored future onComplete impl