`module Address : sig ... end`
`type t`````
`include Async_kernel__.Persistent_connection_intf.Closable with type t := t`
`type t`````

a connection type

`val close : t ‑> unit Async_kernel.Deferred.t`

`close t` closes the connection. The returned deferred becomes determined once any resources needed to maintain the connection have been released.

`val is_closed : t ‑> bool`

`is_closed t` returns true if `close` has ever been called (even if the returned deferred has not yet been fulfilled).

Note that some modules implementing `Closable` may call close internally upon noticing that the connection was closed by the other side. The interface of such a module ought to say that this is the case.

`val close_finished : t ‑> unit Async_kernel.Deferred.t`

`close_finished t` becomes determined at the same time as the result of the first call to `close`. `close_finished` differs from `close` in that it does not have the side effect of initiating a close.