code: def publishAsync(self, topic, payload, QoS, ackCallback=None):
          
          return self._mqtt_core.publish_async(topic, payload, QoS, False, ackCallback)
docs: **Description**
  
          Publish a new message asynchronously to the desired topic with QoS and PUBACK callback. Note that the ack
          callback configuration for a QoS0 publish request will be ignored as there are no PUBACK reception.
  
          **Syntax**
  
          .. code:: python
  
            # Publish a QoS0 message "myPayload" to topic "myTopic"
            myAWSIoTMQTTClient.publishAsync("myTopic", "myPayload", 0)
            # Publish a QoS1 message "myPayloadWithQos1" to topic "myTopic/sub", with custom PUBACK callback
            myAWSIoTMQTTClient.publishAsync("myTopic/sub", "myPayloadWithQos1", 1, ackCallback=myPubackCallback)
  
          **Parameters**
  
          *topic* - Topic name to publish to.
  
          *payload* - Payload to publish.
  
          *QoS* - Quality of Service. Could be 0 or 1.
  
          *ackCallback* - Callback to be invoked when the client receives a PUBACK. Should be in form
          :code:`customCallback(mid)`, where :code:`mid` is the packet id for the disconnect request.
  
          **Returns**
  
          Publish request packet id, for tracking purpose in the corresponding callback.