anchor.diff:              let rec loop() = 
                   printfn "Waiting for request ..."
                   let socket = listener.Accept()
  -
  -                // TODO implement
  +                printfn "Accepted request"
  +                let obs = 
  +                    read_message_async_obs 256 eom_marker socket cts.Token
  +                    |> Observable.publish
  +                let dispose_obs = Observable.connect obs
  +
  +                let write_agent = MailboxProcessor.Start((fun inbox -> 
  +                    let rec loop () = async {
  +                        let! msg = inbox.Receive()
  +                        // this will throw some exceptions when cancelled and disconnected, 
  +                        //  but we don't care because they are silently swallowed
  +                        //  and completion of Received observable will trigger anyways
  +                        do! socket.AsyncSend(msg, 0, Array.length msg) |> Async.Ignore
  +                        return! loop()
  +                    } 
  +                    loop()
  +                ), cts.Token)
  +
  +                let dispose = 
  +                    (fun () ->
  +                        socket.Close()
  +                        dispose_obs.Dispose()
  +                        (write_agent :> IDisposable).Dispose()
  +                    )
  +                    |> callable_once
  +
  +                let res = 
  +                    { new IRawTransport with
  +                        member __.Dispose() = dispose()
  +                        member __.Close() = dispose()
  +                        member __.Write(x) = write_agent.Post x
  +                        member __.Received = obs }
   
                   loop()
               try loop()
  
positive.code:             let beginSend(b,o,c,cb,s) = socket.BeginSend(b,o,c,SocketFlags.None,cb,s)
              Async.FromBeginEnd(buffer, offset, count, beginSend, socket.EndSend)
  
      type IRawTransport = 
          inherit IDisposable 
          abstract Received: IConnectableObservable<byte[]>
  
negative.code: open FDCUtil.Main.Regex
  open FDCDomain.MessageQueue
  open FDCLogger
  
  // persistency layer
  // this should have no dependencies on Domain
  