anchor.diff:      | None ->
           start_listening node
       | Some(peer) ->
  -        match send_message peer guid Join address with
  +        match send_message peer Join address guid with
           | None ->
  -            failwith (sprintf "Could not establish a connection with peer at '%s'" peer)
  +            error <| sprintf "Could not establish a connection with peer at '%s'" peer
           | Some(_) ->
               start_listening node
   
  
positive.code: 
  // ====================================================
  
  type MessageType =
  | Join      // A new node is joining and requesting states
  | Update    // A new node has been added sucessfully: update to include it
  | Route     // Send a message somewhere
  // Add more persistency commands here
  
  // The state record of a Pastry node
  type Node = {
      id: GUID;
      address: NetworkLocation;
      // I assume that there are never more than 65k rows in the table
      routing_table: Map<GUID, Address> list;
  
negative.code:     match args with
      | [|addr; port; peer|] ->
          let address = sprintf "%s:%s" (if addr = "" then get_public_ip() else addr) port
          printfn "? Joining pastry network at '%s'..." address
          let known_peer = if peer = "" then None else Some(peer)
          let node = join_network address known_peer
          ()
  