sig
  type socket = Unix.file_descr
  type marker = Length of int | Split of string
  type bigarray =
      (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t
  type failure =
      Io_error
    | Unix of Unix.error * string * string
    | Unknown of exn
    | Timeout
  val read :
    ?recursive:bool ->
    ?init:string ->
    ?on_error:(string * failure -> unit) ->
    ?timeout:float ->
    priority:'->
    'a scheduler ->
    socket -> marker -> (string * string option -> unit) -> unit
  val write :
    ?exec:(unit -> unit) ->
    ?on_error:(failure -> unit) ->
    ?bigarray:bigarray ->
    ?string:Bytes.t ->
    ?timeout:float -> priority:'-> 'a scheduler -> socket -> unit
end