code: def subscribe(self, topics):
          
          return (yield from self._handler.mqtt_subscribe(topics, self.session.next_packet_id))
docs: Subscribe to some topics.
  
              Send a MQTT `SUBSCRIBE <http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718063>`_ message and wait for broker acknowledgment.
  
              This method is a *coroutine*.
  
              :param topics: array of topics pattern to subscribe with associated QoS.
              :return: `SUBACK <http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718068>`_ message return code.
  
              Example of ``topics`` argument expected structure:
              ::
  
                  [
                      ('$SYS/broker/uptime', QOS_1),
                      ('$SYS/broker/load/#', QOS_2),
                  ]