code: func (client *Client) Go(serviceMethod string, args interface{}, reply interface{}, done chan *Call) *Call {
  	call := new(Call)
  	call.ServiceMethod = serviceMethod
  	call.Args = args
  	call.Reply = reply
  	if done == nil {
  		done = make(chan *Call, 10) // buffered.
  	} else {
  		// If caller passes done != nil, it must arrange that
  		// done has enough buffer for the number of simultaneous
  		// RPCs that will be using that channel.  If the channel
  		// is totally unbuffered, it's best not to run at all.
  		if cap(done) == 0 {
  			log.Panic("rpc: done channel is unbuffered")
  		}
  	}
  	call.Done = done
  	client.send(call)
  	return call
  }
docs: // Go invokes the function asynchronously.  It returns the Call structure representing
  // the invocation.  The done channel will signal when the call is complete by returning
  // the same Call object.  If done is nil, Go will allocate a new channel.
  // If non-nil, done must be buffered or Go will deliberately crash.