sig   type error = [ `Unix of Unix.error * string * string ]   val apply :     ?queue:Fut.queue -> ('-> 'b) -> '-> ('b, [> Futu.error ]) Fut.status   val call : ('-> 'b) -> '-> ('b, [> Futu.error ]) Fut.status   val signal : int -> int Fut.t   val nonblock_stdio : unit -> (unit, [> Futu.error ]) Fut.status   val close : Unix.file_descr -> (unit, [> Futu.error ]) Fut.status   val dup2 :     Unix.file_descr -> Unix.file_descr -> (unit, [> Futu.error ]) Fut.status   val pipe :     unit -> (Unix.file_descr * Unix.file_descr, [> Futu.error ]) Fut.status   val socket :     Unix.socket_domain ->     Unix.socket_type -> int -> (Unix.file_descr, [> Futu.error ]) Fut.status   val socketpair :     Unix.socket_domain ->     Unix.socket_type ->     int -> (Unix.file_descr * Unix.file_descr, [> Futu.error ]) Fut.status   val accept : Unix.file_descr -> Unix.file_descr * Unix.sockaddr   val connect :     Unix.file_descr -> Unix.sockaddr -> (unit, [> Futu.error ]) Fut.status   val bind :     Unix.file_descr -> Unix.sockaddr -> (unit, [> Futu.error ]) Fut.status   val read :     Unix.file_descr ->     string -> int -> int -> (int, [> Futu.error ]) Fut.status   val write :     Unix.file_descr ->     string -> int -> int -> (int, [> Futu.error ]) Fut.status end