def process(self):
        if self.timeout > 0.0 and self.timer.expired:
            console.concise("{0}. Timed out with {1} at {2}\n".format(
                    self.stack.name, self.device.name, round(self.stack.stamper.stamp, 3)))
            self.fail()
            return

        if self.redoTimeout > 0.0 and self.redoTimer.expired:
            self.redoTimer.restart()
            console.concise("{0}: Redoing {1} with {2} at {3}\n".format(
                                            self.stack.name,
                                            self.name,
                                            self.device.name,
                                            round(self.stack.stamper.stamp, 3)))
            if self.tx is not None:
                self.send(self.tx)
Process time based handling of exchange like timeout or retries
dataset/ETHPy150Open ioflo/ioflo/ioflo/aio/proto/exchanging.py/Exchange.process