code: func (c *Client) NewKeepAliver(ctx context.Context) (services.KeepAliver, error) {
  	clt, err := c.grpc()
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	cancelCtx, cancel := context.WithCancel(ctx)
  	stream, err := clt.SendKeepAlives(cancelCtx)
  	if err != nil {
  		cancel()
  		return nil, trail.FromGRPC(err)
  	}
  	k := &streamKeepAliver{
  		stream:      stream,
  		ctx:         cancelCtx,
  		cancel:      cancel,
  		keepAlivesC: make(chan services.KeepAlive),
  	}
  	go k.forwardKeepAlives()
  	go k.recv()
  	return k, nil
  }
docs: // NewKeepAliver returns a new instance of keep aliver