code: func (c *Client) processPubackAndPubcomp(id packet.ID) error {
  	// remove packet from store
  	err := c.Session.DeletePacket(session.Outgoing, id)
  	if err != nil {
  		return err
  	}
  
  	// get future
  	publishFuture := c.futureStore.Get(id)
  	if publishFuture == nil {
  		return nil // ignore a wrongly sent Puback or Pubcomp packet
  	}
  
  	// complete future
  	publishFuture.Complete()
  
  	// remove future from store
  	c.futureStore.Delete(id)
  
  	return nil
  }
docs: // handle an incoming Puback or Pubcomp packet