1open Wonka_types;
2
3let fromPromise = promise =>
4 curry(sink => {
5 let ended = ref(false);
6
7 ignore(
8 Js.Promise.then_(
9 value => {
10 if (! ended^) {
11 sink(. Push(value));
12 sink(. End);
13 };
14
15 Js.Promise.resolve();
16 },
17 promise,
18 ),
19 );
20
21 sink(.
22 Start(
23 (. signal) =>
24 switch (signal) {
25 | Close => ended := true
26 | _ => ()
27 },
28 ),
29 );
30 });