switching the order of completion invocation and delegate reset