docs: function startExchange(client, args, pid) {
        var
          xid,
          phrase = args[0],
          peers,
          peersLn;
  
        if (!phrase || typeof phrase != 'string') {
          return false;
        }
  
        if (pid) {
          // converse with the given peer
          peers = [pid];
        } else {
          // converse with all peers
          peers = objKeys(client.peers);
        }
        peersLn = peers.length;
  
        if (!peersLn) {
          // exit if no peers
          return;
        }
  
        // create exchange identifier
        xid = guid();
  
        // exit if can't start convo
        if (!sendExchange( client, xid, pid, 0, phrase, args.length ? protoSlice.call(args, 1) : [] )) {
          return false;
        }
  
        // track exchange with each message to peer
        while (peersLn--) {
          setupExchange(client, xid, peers[peersLn]).push(phrase);
        }
  
        return xid;
      }