anchor.diff:      |> Async.Parallel
       |> Async.Ignore
   
  -  member __.SerializeDataAndHandleForeignRcs(msg: 'T) =
  +  member __.SerializeDataAndHandleForeignRcs(msg: 'U) =
       let context = serializationContext()
  -    let data = serializer.Serialize<Request<'T>>(Message msg, context.GetStreamingContext())
  +    let data = serializer.Serialize<'U>(msg, context.GetStreamingContext())
   
       setupForeignReplyChannelHandler context |> Async.Start
       data
  
positive.code:         if not client.IsConnected then reply <| Exception (new UnknownRecipientException("npp: message target is stopped or pipe is broken", actorId))
          else
  
          let data = self.SerializeDataAndHandleForeignRcs msg
          
          do! client.AsyncWriteBytes data
  
  
negative.code:     Syscall.unlink(writeFifoName) |> ignore
      Syscall.unlink(readFifoName) |> ignore
  
    let reading = ref None
  
    let rec connect(): unit =
      let readFd = Syscall.``open``(readFifoName, OpenFlags.O_RDONLY)
      if readFd = -1 then
        let errno = Stdlib.GetLastError()
        if errno = Errno.EINTR then connect()
        elif errno = Errno.ENOENT then reading := None
        else failwith (sprintf "Failed to open read end of server pipe. Error code %A" errno)
      else
      //ownership of readFd passes to readStream
      reading := Some <| new UnixStream(readFd)
  
    let rec getWriting() =
      let writeFd = Syscall.``open``(writeFifoName, OpenFlags.O_WRONLY)
  