code: func (k *streamKeepAliver) recv() {
  	err := k.stream.RecvMsg(&empty.Empty{})
  	k.closeWithError(trail.FromGRPC(err))
  }
docs: // recv is necessary to receive errors from the
  // server, otherwise no errors will be propagated