code: func (c *Client) CallAsync(request interface{}) (*AsyncResult, error) {
  	return c.callAsync(request, false, false)
  }
docs: // CallAsync starts async rpc call.
  //
  // Rpc call is complete after <-AsyncResult.Done unblocks.
  // If you want canceling the request, just throw away the returned AsyncResult.
  //
  // CallAsync doesn't respect Client.RequestTimeout - response timeout
  // may be controlled by the caller via something like:
  //
  //     r := c.CallAsync("foobar")
  //     select {
  //     case <-time.After(c.RequestTimeout):
  //        log.Printf("rpc timeout!")
  //     case <-r.Done:
  //        processResponse(r.Response, r.Error)
  //     }
  //
  // Request and response types may be arbitrary. All the request and response
  // types the client may use must be registered via RegisterType() before
  // starting the client.
  // There is no need in registering base Go types such as int, string, bool,
  // float64, etc. or arrays, slices and maps containing base Go types.
  //
  // Don't forget starting the client with Client.Start() before
  // calling Client.CallAsync().