`type t`````

`let g,h = Weak_glass.create` is analogous to `let g = Glass.create () and h = watch g` except it also lets you see when it's `unwatched`. It is a guarantee that after `unwatched g` becomes determined, `break g` will no longer have any effect (because the user has lost all references to all hearts derived from `h`).

`val create : unit ‑> t * Heart.t`

`let g,h = Weak_glass.create` is analogous to `let g = Glass.create () and h = watch g` except it also lets you see when it's `unwatched`. It is a guarantee that after `unwatched g` becomes determined, `break g` will no longer have any effect (because the user has lost all references to all hearts derived from `h`).

`val unwatched : t ‑> unit Async.Deferred.t`

Breaks the heart returned by `create`

`val break : t ‑> unit`

Breaks the heart returned by `create`