Invoke(ctx context.Context, method string, args interface{}, reply interface{}, opts ...CallOption) error...= nil {
return cc.dopts.unaryInt(ctx, method, args, reply, cc, invoke, opts...)
}
return invoke...(ctx, method, args, reply, cc, opts...)
}
func invoke(ctx context.Context, method string, req, reply...method and this method never writes nil.
// So, attempt can be nil only inside newClientStream function...So, finish method is the only
// place where we need to check if the attempt is nil.