code: func (c *Client) PostSessionSlice(slice events.SessionSlice) error {
  	data, err := slice.Marshal()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	r, err := http.NewRequest("POST", c.Endpoint("namespaces", slice.Namespace, "sessions", string(slice.SessionID), "slice"), bytes.NewReader(data))
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	r.Header.Set("Content-Type", "application/grpc")
  	c.Client.SetAuthHeader(r.Header)
  	re, err := c.Client.HTTPClient().Do(r)
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	// we **must** consume response by reading all of its body, otherwise the http
  	// client will allocate a new connection for subsequent requests
  	defer re.Body.Close()
  	responseBytes, _ := ioutil.ReadAll(re.Body)
  	return trace.ReadError(re.StatusCode, responseBytes)
  }
docs: // PostSessionSlice allows clients to submit session stream chunks to the audit log
  // (part of evets.IAuditLog interface)
  //
  // The data is POSTed to HTTP server as a simple binary body (no encodings of any
  // kind are needed)