sig
  type 'a where_to_connect
  val to_host_and_port :
    string ->
    int -> Async.Std.Socket.Address.t Async.Std.Tcp.where_to_connect
  val connect :
    'Async.Std.Tcp.where_to_connect ->
    ('Async.Std.Socket.t * Async.Std.Reader.t * Async.Std.Writer.t)
    Async.Std.Deferred.t
end