@dxos/async 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/lib/browser/index.mjs +193 -192
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +193 -192
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/callback.d.ts +2 -1
  8. package/dist/types/src/callback.d.ts.map +1 -1
  9. package/dist/types/src/chain.d.ts +1 -1
  10. package/dist/types/src/chain.d.ts.map +1 -1
  11. package/dist/types/src/cleanup.d.ts +1 -1
  12. package/dist/types/src/cleanup.d.ts.map +1 -1
  13. package/dist/types/src/debounce.d.ts +16 -2
  14. package/dist/types/src/debounce.d.ts.map +1 -1
  15. package/dist/types/src/index.d.ts +0 -5
  16. package/dist/types/src/index.d.ts.map +1 -1
  17. package/dist/types/src/task-scheduling.d.ts.map +1 -1
  18. package/dist/types/src/testing.d.ts +13 -0
  19. package/dist/types/src/testing.d.ts.map +1 -1
  20. package/dist/types/src/timeout.d.ts +1 -1
  21. package/dist/types/src/timeout.d.ts.map +1 -1
  22. package/dist/types/src/trigger.d.ts +11 -0
  23. package/dist/types/src/trigger.d.ts.map +1 -1
  24. package/dist/types/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +9 -9
  26. package/src/callback.ts +3 -3
  27. package/src/chain.ts +1 -1
  28. package/src/cleanup.ts +3 -3
  29. package/src/debounce.test.ts +69 -12
  30. package/src/debounce.ts +32 -11
  31. package/src/event-emitter.test.ts +2 -1
  32. package/src/index.ts +0 -5
  33. package/src/observable-value.test.ts +1 -1
  34. package/src/persistent-lifecycle.test.ts +1 -1
  35. package/src/task-scheduling.ts +1 -1
  36. package/src/testing.test.ts +41 -1
  37. package/src/testing.ts +53 -0
  38. package/src/timeout.ts +23 -22
  39. package/src/trigger.ts +58 -1
  40. package/src/update-scheduler.ts +1 -1
  41. package/dist/types/src/latch.d.ts +0 -11
  42. package/dist/types/src/latch.d.ts.map +0 -1
  43. package/dist/types/src/sink.d.ts +0 -6
  44. package/dist/types/src/sink.d.ts.map +0 -1
  45. package/dist/types/src/throttle.d.ts +0 -2
  46. package/dist/types/src/throttle.d.ts.map +0 -1
  47. package/dist/types/src/throttle.test.d.ts +0 -2
  48. package/dist/types/src/throttle.test.d.ts.map +0 -1
  49. package/dist/types/src/types.d.ts +0 -2
  50. package/dist/types/src/types.d.ts.map +0 -1
  51. package/dist/types/src/until.d.ts +0 -14
  52. package/dist/types/src/until.d.ts.map +0 -1
  53. package/dist/types/src/until.test.d.ts +0 -2
  54. package/dist/types/src/until.test.d.ts.map +0 -1
  55. package/src/latch.ts +0 -60
  56. package/src/sink.ts +0 -26
  57. package/src/throttle.test.ts +0 -65
  58. package/src/throttle.ts +0 -14
  59. package/src/types.ts +0 -5
  60. package/src/until.test.ts +0 -47
  61. package/src/until.ts +0 -58
@@ -1,5 +1,5 @@
1
1
  // src/callback.ts
2
- var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
2
+ var promiseFromCallback = (run) => new Promise((resolve, reject) => {
3
3
  run((error, value) => {
4
4
  if (error) {
5
5
  reject(error);
@@ -10,9 +10,9 @@ var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
10
10
  });
11
11
 
12
12
  // src/chain.ts
13
- var asyncChain = (chain) => async (elements) => {
13
+ var chain = (chain2) => async (elements) => {
14
14
  let result = await elements;
15
- for (const part of chain) {
15
+ for (const part of chain2) {
16
16
  result = await Promise.all(result.map(async (element) => await part(element)));
17
17
  }
18
18
  return result;
@@ -33,14 +33,12 @@ var interval = (cb, ms) => {
33
33
  const t = setInterval(cb, ms);
34
34
  return () => clearInterval(t);
35
35
  };
36
- function addEventListener(target, type, listener, options) {
36
+ var addEventListener = (target, type, listener, options) => {
37
37
  target.addEventListener(type, listener, options);
38
38
  return () => target.removeEventListener(type, listener, options);
39
- }
39
+ };
40
40
  var SubscriptionList = class {
41
- constructor() {
42
- this._cleanups = [];
43
- }
41
+ _cleanups = [];
44
42
  add(cb) {
45
43
  this._cleanups.push(cb);
46
44
  return this;
@@ -51,6 +49,7 @@ var SubscriptionList = class {
51
49
  }
52
50
  };
53
51
  var SubscriptionSet = class {
52
+ _cleanupMap;
54
53
  constructor(keyProjection) {
55
54
  this._cleanupMap = new ComplexMap(keyProjection);
56
55
  }
@@ -64,29 +63,27 @@ var SubscriptionSet = class {
64
63
  }
65
64
  };
66
65
 
67
- // src/throttle.ts
68
- var throttle = (cb, wait = 100) => {
66
+ // src/debounce.ts
67
+ var debounce = (cb, delay = 100) => {
68
+ let t;
69
+ return (...args) => {
70
+ clearTimeout(t);
71
+ t = setTimeout(() => cb(...args), delay);
72
+ };
73
+ };
74
+ var throttle = (cb, delay = 100) => {
69
75
  let lastCall = 0;
70
76
  return (...args) => {
71
77
  const now = Date.now();
72
- if (now - lastCall >= wait) {
78
+ if (now - lastCall >= delay) {
73
79
  cb(...args);
74
80
  lastCall = now;
75
81
  }
76
82
  };
77
83
  };
78
-
79
- // src/debounce.ts
80
- var debounce = (cb, wait = 100) => {
81
- let t;
82
- return (...args) => {
83
- clearTimeout(t);
84
- t = setTimeout(() => cb(...args), wait);
85
- };
86
- };
87
- var debounceAndThrottle = (cb, wait = 100) => {
88
- const debounced = debounce(cb, wait);
89
- const throttled = throttle(cb, wait);
84
+ var debounceAndThrottle = (cb, delay = 100) => {
85
+ const debounced = debounce(cb, delay);
86
+ const throttled = throttle(cb, delay);
90
87
  return (...args) => {
91
88
  debounced(...args);
92
89
  throttled(...args);
@@ -124,6 +121,23 @@ var sleep = (ms) => {
124
121
  sleeper();
125
122
  });
126
123
  };
124
+ var sleepWithContext = (ctx, ms) => {
125
+ const error = new ContextDisposedError();
126
+ return new Promise((resolve, reject) => {
127
+ if (ctx.disposed) {
128
+ reject(error);
129
+ return;
130
+ }
131
+ const timeout2 = setTimeout(() => {
132
+ clearDispose();
133
+ resolve();
134
+ }, ms);
135
+ const clearDispose = ctx.onDispose(() => {
136
+ clearTimeout(timeout2);
137
+ reject(error);
138
+ });
139
+ });
140
+ };
127
141
  var asyncReturn = () => sleep(0);
128
142
  var asyncTimeout = async (promise, timeout2, err) => {
129
143
  let timeoutId;
@@ -134,7 +148,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
134
148
  }, timeout2);
135
149
  unrefTimeout(timeoutId);
136
150
  });
137
- const conditionTimeout = typeof promise === "function" ? createPromiseFromCallback(promise) : promise;
151
+ const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
138
152
  return await Promise.race([
139
153
  conditionTimeout,
140
154
  timeoutPromise
@@ -147,23 +161,6 @@ var unrefTimeout = (timeoutId) => {
147
161
  timeoutId.unref();
148
162
  }
149
163
  };
150
- var sleepWithContext = (ctx, ms) => {
151
- const error = new ContextDisposedError();
152
- return new Promise((resolve, reject) => {
153
- if (ctx.disposed) {
154
- reject(error);
155
- return;
156
- }
157
- const timeout2 = setTimeout(() => {
158
- clearDispose();
159
- resolve();
160
- }, ms);
161
- const clearDispose = ctx.onDispose(() => {
162
- clearTimeout(timeout2);
163
- reject(error);
164
- });
165
- });
166
- };
167
164
 
168
165
  // src/event-emitter.ts
169
166
  var onEvent = (eventEmitter, eventName, callback) => {
@@ -193,10 +190,6 @@ import { Context } from "@dxos/context";
193
190
  var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
194
191
  var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
195
192
  var Event = class _Event {
196
- constructor() {
197
- this._listeners = /* @__PURE__ */ new Set();
198
- this._effects = /* @__PURE__ */ new Set();
199
- }
200
193
  /**
201
194
  * Wrap objects that have on/off style event emitters.
202
195
  */
@@ -209,6 +202,8 @@ var Event = class _Event {
209
202
  });
210
203
  return event;
211
204
  }
205
+ _listeners = /* @__PURE__ */ new Set();
206
+ _effects = /* @__PURE__ */ new Set();
212
207
  /**
213
208
  * Emit an event.
214
209
  * In most cases should only be called by the class or entity containing the event.
@@ -452,11 +447,15 @@ var Event = class _Event {
452
447
  }
453
448
  };
454
449
  var EventListener = class {
450
+ ctx;
451
+ once;
452
+ weak;
453
+ callback;
454
+ _clearDispose = void 0;
455
455
  constructor(event, listener, ctx, once, weak) {
456
456
  this.ctx = ctx;
457
457
  this.once = once;
458
458
  this.weak = weak;
459
- this._clearDispose = void 0;
460
459
  this._clearDispose = ctx.onDispose(() => {
461
460
  event._removeListener(this);
462
461
  });
@@ -516,65 +515,13 @@ var weakListeners = () => {
516
515
  };
517
516
  };
518
517
 
519
- // src/latch.ts
520
- import { invariant } from "@dxos/invariant";
521
- var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/latch.ts";
522
- var latch = ({ count = 1, timeout: timeout2 } = {}) => {
523
- invariant(count >= 0, void 0, {
524
- F: __dxlog_file2,
525
- L: 19,
526
- S: void 0,
527
- A: [
528
- "count >= 0",
529
- ""
530
- ]
531
- });
532
- let t;
533
- let doResolve;
534
- let doReject;
535
- const promise = new Promise((resolve, reject) => {
536
- doResolve = (value) => {
537
- clearTimeout(t);
538
- resolve(value);
539
- };
540
- doReject = (err) => {
541
- clearTimeout(t);
542
- reject(err);
543
- };
544
- });
545
- if (count === 0) {
546
- setTimeout(() => {
547
- doResolve(0);
548
- });
549
- } else {
550
- if (timeout2) {
551
- t = setTimeout(() => {
552
- doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
553
- }, timeout2);
554
- }
555
- }
556
- let i = 0;
557
- return [
558
- async () => await promise,
559
- () => {
560
- if (++i === count) {
561
- doResolve(i);
562
- }
563
- return i;
564
- },
565
- (err) => doReject(err)
566
- ];
567
- };
568
-
569
518
  // src/mutex.ts
570
519
  import "@dxos/util";
571
520
  import { warnAfterTimeout } from "@dxos/debug";
572
521
  var Mutex = class {
573
- constructor() {
574
- this._queue = Promise.resolve();
575
- this._queueLength = 0;
576
- this._tag = null;
577
- }
522
+ _queue = Promise.resolve();
523
+ _queueLength = 0;
524
+ _tag = null;
578
525
  get tag() {
579
526
  return this._tag;
580
527
  }
@@ -620,6 +567,7 @@ var Mutex = class {
620
567
  }
621
568
  };
622
569
  var MutexGuard = class {
570
+ _release;
623
571
  constructor(_release) {
624
572
  this._release = _release;
625
573
  }
@@ -663,6 +611,8 @@ import Observable from "zen-observable";
663
611
  import PushStream from "zen-push";
664
612
 
665
613
  // src/trigger.ts
614
+ import { invariant } from "@dxos/invariant";
615
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
666
616
  var trigger = (timeout2) => {
667
617
  let callback;
668
618
  const promise = new Promise((resolve, reject) => {
@@ -678,18 +628,22 @@ var trigger = (timeout2) => {
678
628
  resolver
679
629
  ];
680
630
  };
681
- var TriggerState = /* @__PURE__ */ function(TriggerState2) {
631
+ var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
682
632
  TriggerState2["WAITING"] = "WAITING";
683
633
  TriggerState2["RESOLVED"] = "RESOLVED";
684
634
  TriggerState2["REJECTED"] = "REJECTED";
685
635
  return TriggerState2;
686
- }({});
636
+ })({});
687
637
  var Trigger = class {
638
+ _options;
639
+ _promise;
640
+ _resolve;
641
+ _reject;
642
+ _state = "WAITING";
688
643
  constructor(_options = {
689
644
  autoReset: false
690
645
  }) {
691
646
  this._options = _options;
692
- this._state = "WAITING";
693
647
  this.reset();
694
648
  }
695
649
  get state() {
@@ -749,23 +703,61 @@ var Trigger = class {
749
703
  return this;
750
704
  }
751
705
  };
706
+ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
707
+ invariant(count >= 0, void 0, {
708
+ F: __dxlog_file2,
709
+ L: 139,
710
+ S: void 0,
711
+ A: [
712
+ "count >= 0",
713
+ ""
714
+ ]
715
+ });
716
+ let t;
717
+ let doResolve;
718
+ let doReject;
719
+ const promise = new Promise((resolve, reject) => {
720
+ doResolve = (value) => {
721
+ clearTimeout(t);
722
+ resolve(value);
723
+ };
724
+ doReject = (err) => {
725
+ clearTimeout(t);
726
+ reject(err);
727
+ };
728
+ });
729
+ if (count === 0) {
730
+ setTimeout(() => {
731
+ doResolve(0);
732
+ });
733
+ } else {
734
+ if (timeout2) {
735
+ t = setTimeout(() => {
736
+ doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
737
+ }, timeout2);
738
+ }
739
+ }
740
+ let i = 0;
741
+ return [
742
+ async () => await promise,
743
+ () => {
744
+ if (++i === count) {
745
+ doResolve(i);
746
+ }
747
+ return i;
748
+ },
749
+ (err) => doReject(err)
750
+ ];
751
+ };
752
752
 
753
753
  // src/observable.ts
754
754
  var MulticastObservable = class _MulticastObservable extends Observable {
755
+ _value;
756
+ _observers = /* @__PURE__ */ new Set();
757
+ _observable;
758
+ _completed = new Trigger();
755
759
  constructor(subscriber, _value) {
756
- super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
757
- next: (value) => {
758
- this._value = value;
759
- this._observers.forEach((observer) => observer.next?.(value));
760
- },
761
- error: (err) => {
762
- this._observers.forEach((observer) => observer.error?.(err));
763
- },
764
- complete: () => {
765
- this._completed.wake();
766
- this._observers.forEach((observer) => observer.complete?.());
767
- }
768
- };
760
+ super((observer) => this._subscribe(observer)), this._value = _value;
769
761
  this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
770
762
  this._observable.subscribe(this._handlers);
771
763
  }
@@ -849,18 +841,30 @@ var MulticastObservable = class _MulticastObservable extends Observable {
849
841
  this._observers.delete(observer);
850
842
  };
851
843
  }
844
+ _handlers = {
845
+ next: (value) => {
846
+ this._value = value;
847
+ this._observers.forEach((observer) => observer.next?.(value));
848
+ },
849
+ error: (err) => {
850
+ this._observers.forEach((observer) => observer.error?.(err));
851
+ },
852
+ complete: () => {
853
+ this._completed.wake();
854
+ this._observers.forEach((observer) => observer.complete?.());
855
+ }
856
+ };
852
857
  };
853
858
  var EMPTY_OBSERVABLE = MulticastObservable.of(null);
854
859
 
855
860
  // src/observable-value.ts
856
861
  import { createSetDispatch } from "@dxos/util";
857
862
  var ObservableProvider = class {
858
- constructor() {
859
- this._handlers = /* @__PURE__ */ new Set();
860
- this._proxy = createSetDispatch({
861
- handlers: this._handlers
862
- });
863
- }
863
+ _handlers = /* @__PURE__ */ new Set();
864
+ _proxy = createSetDispatch({
865
+ handlers: this._handlers
866
+ });
867
+ _value;
864
868
  /**
865
869
  * Proxy used to dispatch callbacks to each subscription.
866
870
  */
@@ -881,8 +885,10 @@ var ObservableProvider = class {
881
885
  }
882
886
  };
883
887
  var CancellableObservableProvider = class extends ObservableProvider {
888
+ _handleCancel;
889
+ _cancelled = false;
884
890
  constructor(_handleCancel) {
885
- super(), this._handleCancel = _handleCancel, this._cancelled = false;
891
+ super(), this._handleCancel = _handleCancel;
886
892
  }
887
893
  get cancelled() {
888
894
  return this._cancelled;
@@ -992,12 +998,14 @@ if (enabled) {
992
998
 
993
999
  // src/task-scheduling.ts
994
1000
  var DeferredTask = class {
1001
+ _ctx;
1002
+ _callback;
1003
+ _scheduled = false;
1004
+ _currentTask = null;
1005
+ _nextTask = new Trigger();
995
1006
  constructor(_ctx, _callback) {
996
1007
  this._ctx = _ctx;
997
1008
  this._callback = _callback;
998
- this._scheduled = false;
999
- this._currentTask = null;
1000
- this._nextTask = new Trigger();
1001
1009
  }
1002
1010
  get scheduled() {
1003
1011
  return this._scheduled;
@@ -1127,11 +1135,15 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
1127
1135
  var INIT_RESTART_DELAY = 100;
1128
1136
  var DEFAULT_MAX_RESTART_DELAY = 5e3;
1129
1137
  var PersistentLifecycle = class extends Resource {
1138
+ _start;
1139
+ _stop;
1140
+ _onRestart;
1141
+ _maxRestartDelay;
1142
+ _currentState = void 0;
1143
+ _restartTask = void 0;
1144
+ _restartAfter = 0;
1130
1145
  constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
1131
1146
  super();
1132
- this._currentState = void 0;
1133
- this._restartTask = void 0;
1134
- this._restartAfter = 0;
1135
1147
  this._start = start;
1136
1148
  this._stop = stop;
1137
1149
  this._onRestart = onRestart;
@@ -1293,20 +1305,6 @@ var makePushIterable = () => {
1293
1305
  };
1294
1306
  };
1295
1307
 
1296
- // src/sink.ts
1297
- var sink = (emitter, event, count = 1) => {
1298
- const [getPromise, resolve] = trigger();
1299
- let counter = 0;
1300
- const listener = () => {
1301
- if (++counter === count) {
1302
- emitter.off(event, listener);
1303
- resolve();
1304
- }
1305
- };
1306
- emitter.on(event, listener);
1307
- return getPromise();
1308
- };
1309
-
1310
1308
  // src/stream-to-array.ts
1311
1309
  var streamToArray = (stream) => {
1312
1310
  let deferred;
@@ -1352,11 +1350,6 @@ var streamToArray = (stream) => {
1352
1350
  // src/test-stream.ts
1353
1351
  import { Duplex } from "@dxos/node-std/stream";
1354
1352
  var TestStream = class extends Duplex {
1355
- constructor() {
1356
- super(...arguments);
1357
- this._received = Buffer.alloc(0);
1358
- this._onWrite = new Event();
1359
- }
1360
1353
  static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
1361
1354
  stream1.push("ping");
1362
1355
  stream2.push("pong");
@@ -1369,6 +1362,8 @@ var TestStream = class extends Duplex {
1369
1362
  })
1370
1363
  ]);
1371
1364
  }
1365
+ _received = Buffer.alloc(0);
1366
+ _onWrite = new Event();
1372
1367
  _write(chunk, encoding, callback) {
1373
1368
  this._received = Buffer.concat([
1374
1369
  this._received,
@@ -1410,13 +1405,48 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
1410
1405
  timeout: timeout2
1411
1406
  });
1412
1407
  };
1408
+ var until = (cb, timeout2) => {
1409
+ return new Promise((resolve, reject) => {
1410
+ const t = timeout2 && setTimeout(() => {
1411
+ reject(new Error(`Timeout after ${t}ms`));
1412
+ }, timeout2);
1413
+ setTimeout(async () => {
1414
+ try {
1415
+ await cb((value) => {
1416
+ t && clearTimeout(t);
1417
+ resolve(value);
1418
+ }, (error) => {
1419
+ t && clearTimeout(t);
1420
+ reject(error);
1421
+ });
1422
+ } catch (err) {
1423
+ reject(err);
1424
+ }
1425
+ });
1426
+ });
1427
+ };
1428
+ var untilPromise = (cb) => cb();
1429
+ var untilError = (cb) => {
1430
+ return new Promise((resolve, reject) => {
1431
+ setTimeout(async () => {
1432
+ try {
1433
+ await cb();
1434
+ reject(new Error("No error was thrown."));
1435
+ } catch (err) {
1436
+ resolve(err);
1437
+ }
1438
+ });
1439
+ });
1440
+ };
1413
1441
 
1414
1442
  // src/timer.ts
1415
1443
  var Timer = class {
1444
+ _callback;
1445
+ _state = new Event();
1446
+ _timer;
1447
+ _count = 0;
1416
1448
  constructor(_callback) {
1417
1449
  this._callback = _callback;
1418
- this._state = new Event();
1419
- this._count = 0;
1420
1450
  }
1421
1451
  get state() {
1422
1452
  return this._state;
@@ -1459,51 +1489,23 @@ var Timer = class {
1459
1489
  }
1460
1490
  };
1461
1491
 
1462
- // src/until.ts
1463
- var until = (cb, timeout2) => {
1464
- return new Promise((resolve, reject) => {
1465
- const t = timeout2 && setTimeout(() => {
1466
- reject(new Error(`Timeout after ${t}ms`));
1467
- }, timeout2);
1468
- setTimeout(async () => {
1469
- try {
1470
- await cb((value) => {
1471
- t && clearTimeout(t);
1472
- resolve(value);
1473
- }, (error) => {
1474
- t && clearTimeout(t);
1475
- reject(error);
1476
- });
1477
- } catch (err) {
1478
- reject(err);
1479
- }
1480
- });
1481
- });
1482
- };
1483
- var untilPromise = (cb) => cb();
1484
- var untilError = (cb) => {
1485
- return new Promise((resolve, reject) => {
1486
- setTimeout(async () => {
1487
- try {
1488
- await cb();
1489
- reject(new Error("No error was thrown."));
1490
- } catch (err) {
1491
- resolve(err);
1492
- }
1493
- });
1494
- });
1495
- };
1496
-
1497
1492
  // src/update-scheduler.ts
1498
1493
  var TIME_PERIOD = 1e3;
1499
1494
  var UpdateScheduler = class {
1495
+ _ctx;
1496
+ _callback;
1497
+ _params;
1498
+ /**
1499
+ * Promise that resolves when the callback is done.
1500
+ * Never rejects.
1501
+ */
1502
+ _promise = null;
1503
+ _scheduled = false;
1504
+ _lastUpdateTime = -TIME_PERIOD;
1500
1505
  constructor(_ctx, _callback, _params = {}) {
1501
1506
  this._ctx = _ctx;
1502
1507
  this._callback = _callback;
1503
1508
  this._params = _params;
1504
- this._promise = null;
1505
- this._scheduled = false;
1506
- this._lastUpdateTime = -TIME_PERIOD;
1507
1509
  _ctx.onDispose(async () => {
1508
1510
  await this._promise;
1509
1511
  });
@@ -1586,11 +1588,10 @@ export {
1586
1588
  UpdateScheduler,
1587
1589
  addEventListener,
1588
1590
  addListener,
1589
- asyncChain,
1590
1591
  asyncReturn,
1591
1592
  asyncTimeout,
1593
+ chain,
1592
1594
  combine,
1593
- createPromiseFromCallback,
1594
1595
  debounce,
1595
1596
  debounceAndThrottle,
1596
1597
  dumpLeaks,
@@ -1599,13 +1600,13 @@ export {
1599
1600
  makePushIterable,
1600
1601
  observableError,
1601
1602
  onEvent,
1603
+ promiseFromCallback,
1602
1604
  runInContext,
1603
1605
  runInContextAsync,
1604
1606
  scheduleExponentialBackoffTaskInterval,
1605
1607
  scheduleMicroTask,
1606
1608
  scheduleTask,
1607
1609
  scheduleTaskInterval,
1608
- sink,
1609
1610
  sleep,
1610
1611
  sleepWithContext,
1611
1612
  streamToArray,