code: func (cli *Client) handlePUBACK(p packet.Packet) error {
  	// Lock for update.
  	cli.muSess.Lock()
  
  	// Unlock.
  	defer cli.muSess.Unlock()
  
  	// Extract the Packet Identifier of the Packet.
  	id := p.(*packet.PUBACK).PacketID
  
  	// Validate the Packet Identifier.
  	if err := cli.validatePacketID(cli.sess.sendingPackets, id, packet.TypePUBLISH); err != nil {
  		return err
  	}
  
  	// Delete the PUBLISH Packet from the Session.
  	delete(cli.sess.sendingPackets, id)
  
  	return nil
  }
docs: // handlePUBACK handles the PUBACK Packet.