open Wonka_types; let make = f => curry(sink => { let teardown = ref((.) => ()); sink(.Start((.signal) => { switch (signal) { | Close => teardown^(.) | Pull => () } })); teardown := f(.{ next: value => sink(.Push(value)), complete: () => sink(.End) }); });