code: def mqtt_connected(func):
      
      @asyncio.coroutine
      @wraps(func)
      def wrapper(self, *args, **kwargs):
          if not self._connected_state.is_set():
              base_logger.warning("Client not connected, waiting for it")
              _, pending = yield from asyncio.wait([self._connected_state.wait(), self._no_more_connections.wait()], return_when=asyncio.FIRST_COMPLETED)
              for t in pending:
                  t.cancel()
              if self._no_more_connections.is_set():
                  raise ClientException("Will not reconnect")
          return (yield from func(self, *args, **kwargs))
      return wrapper
docs: MQTTClient coroutines decorator which will wait until connection before calling the decorated method.
          :param func: coroutine to be called once connected
          :return: coroutine result