sig
  type t
  val receive :
    Async.Std.Reader.t ->
    [ `Eof | `Ok of Protocol.Marshalable.t ] Async.Std.Deferred.t
  val send : Async.Std.Writer.t -> Protocol.Marshalable.t -> unit
end