let sub (subs: 'a t) : 'Pipe.Reader.t =
    let (r, w) = Pipe.create () in
    subs := w::!subs;
    r