def start(self):
        """Start the connector state machine."""
        if self.started:
            raise ConnectorStartedError()

        self.started = True

        try:
            self.connect_watcher.start()
            self.timeout_watcher.start()
            self.sock.connect(self.addr)
        except IOError as e:
            self.errored = True
            self._finish()
            self.deferred.errback(e)

        return self.deferred
Start the connector state machine.