'Start SASL authentication exchange.'

def start(self):

    self.setMechanism()
    self._deferred = defer.Deferred()
    self.xmlstream.addObserver('/challenge', self.onChallenge)
    self.xmlstream.addOnetimeObserver('/success', self.onSuccess)
    self.xmlstream.addOnetimeObserver('/failure', self.onFailure)
    self.sendAuth(self.mechanism.getInitialResponse())
    return self._deferred
