anchor.diff:      |> processCritical
       |> ifContinueThen processMessage
   
  -let rec processMessages (reader:StreamReader) (writer:StreamWriter) =
  +let rec processMessages (reader:StreamReader) (writer:StreamWriter) = async {
       let line = reader.ReadLine()
   
       match reader.EndOfStream with
  
positive.code:     writer.WriteLine(sprintf "JOIN #%s" channel)
      writer.Flush()
  
  [<EntryPoint>]
  let main args = 
      use client = new TcpClient("irc.twitch.tv", 6667)
      use reader = new StreamReader(client.GetStream(), Encoding.UTF8)
      use writer = new StreamWriter(client.GetStream(), Encoding.UTF8)
  
      writer.NewLine <- "\r\n"
  
      // Replace the empty strings with your user credentials (username, oauth)
      writer |> login "" ""
      // Replace the empty string with the channel you want to join
      writer |> join ""
  
      processMessages reader writer
      0
negative.code:             else
                  processLine line |> ignore
  
          return! processMessages reader writer
      | true ->
          ()
  }
  
  let login nick pass (writer:StreamWriter) =
      writer.WriteLine()
  