def METHOD_NAME(self,(exitcode, stdout, stderr)):
    if exitcode == PULSE2_SUCCESS_ERROR: # success
        self.logger.info("Circuit #%s: pull %s done (exitcode == 0)" % (self.coh.id, self.name))
        self.update_history_done(exitcode, stdout, stderr)
        if self.coh.isStateStopped():
            return DIRECTIVE.KILLED
        if self.phase.switch_to_done():
            return self.next()
        return self.give_up()
    elif self.name in self.config.non_fatal_steps:
        self.logger.info("Circuit #%s: pull %s failed (exitcode != 0), but non fatal according to scheduler config file" % (self.coh.id, self.name))
        self.update_history_failed(exitcode, stdout, stderr)
        self.phase.set_done()
        return self.next()
    else: # failure: immediately give up
        self.logger.info("Circuit #%s: pull %s failed (exitcode != 0)" % (self.coh.id, self.name))
        self.update_history_failed(exitcode, stdout, stderr)
        return self.switch_phase_failed()