docs: function rpcCommon(args, callback) {
      var rpcctx, req, addrs;
  
      assert.object(args, 'args');
      assert.object(args.rpcctx, 'args.rpcctx');
      assert.string(args.rpcmethod, 'args.rpcmethod');
      assert.array(args.rpcargs, 'args.rpcargs');
      assert.object(args.log, 'args.log');
      assert.optionalNumber(args.timeout, 'args.timeout');
      assert.optionalBool(args.ignoreNullValues, 'args.ignoreNullValues');
      assert.func(callback);
  
      rpcctx = args.rpcctx;
      req = rpcctx.fastClient().rpc({
          'rpcmethod': args.rpcmethod,
          'rpcargs': args.rpcargs,
          'timeout': args.timeout,
          'ignoreNullValues': args.ignoreNullValues,
          'log': args.log
      });
  
      req.once('end', callback);
      req.once('error', function (err) {
          if (rpcctx.unwrapErrors()) {
              err = unwrapError(err);
          } else {
              addrs = rpcctx.socketAddrs();
              err = new VError({
                  'cause': err,
                  'info': addrs
              }, 'moray client ("%s" to "%s")', addrs.local, addrs.remote);
          }
          callback(err);
      });
  
      return (req);
  }