code: func NewCallWrapper(opts ...Option) client.CallWrapper {
  	options := Options{
  		Name:   "go.micro.client.CallFunc",
  		Daemon: "localhost:2000",
  	}
  
  	for _, o := range opts {
  		o(&options)
  	}
  
  	x := newXRay(options)
  
  	return func(cf client.CallFunc) client.CallFunc {
  		return func(ctx context.Context, node *registry.Node, req client.Request, rsp interface{}, opts client.CallOptions) error {
  			var err error
  			s := getSegment(options.Name, ctx)
  
  			defer func() {
  				setCallStatus(s, node.Address, req.Endpoint(), err)
  				go record(x, s)
  			}()
  
  			ctx = newContext(ctx, s)
  			err = cf(ctx, node, req, rsp, opts)
  			return err
  		}
  	}
  }
docs: // NewCallWrapper accepts Options and returns a Trace Call Wrapper for individual node calls made by the client