sig
  module To_worker :
    sig
      type ('a, 'b, 'c) t =
          Run of (('a, 'b) Hub.t -> 'Async.Std.Deferred.t)
    end
  module From_worker : sig type 'a t = Result of '| Exn of string end
  val run :
    control_socket:([ `Passive ], Async.Std.Socket.Address.Inet.t)
                   Async.Std.Socket.t ->
    Core.Std.never_returns
end