'Start authentication. Result can be obtained via "SASL.startsasl" attribute and will be
either "success" or "failure". Note that successfull auth will take at least
two Dispatcher.Process() calls.'

def auth(self):

    if self.startsasl:
        pass
    elif self._owner.Dispatcher.Stream.features:
        try:
            self.FeaturesHandler(self._owner.Dispatcher, self._owner.Dispatcher.Stream.features)
        except NodeProcessed:
            pass
    else:
        self._owner.RegisterHandler('features', self.FeaturesHandler, xmlns=NS_STREAMS)
