Smart_flow
val io_buffer_size : int
type ('a, 's) raise = exn -> ('a, 's) Sigs.io
val run : 's Sigs.scheduler -> ('res, 's) raise -> ('flow, 'error, 's) Sigs.flow -> 'flow -> ('res, [ `Protocol of Smart.error ]) Smart.t -> ('res, 's) Sigs.io