diff --git a/packages/common/infra/src/framework/core/provider.ts b/packages/common/infra/src/framework/core/provider.ts index 58939f77ae..15b2419aea 100644 --- a/packages/common/infra/src/framework/core/provider.ts +++ b/packages/common/infra/src/framework/core/provider.ts @@ -122,9 +122,10 @@ export class ComponentCachePool { try { i[Symbol.dispose](); } catch (err) { - setImmediate(() => { + // make a uncaught exception + setTimeout(() => { throw err; - }); + }, 0); } } } diff --git a/packages/common/infra/src/livedata/effect/index.ts b/packages/common/infra/src/livedata/effect/index.ts index d1f13de1db..e42837a018 100644 --- a/packages/common/infra/src/livedata/effect/index.ts +++ b/packages/common/infra/src/livedata/effect/index.ts @@ -93,21 +93,24 @@ export function effect(...args: any[]) { const subscription = subject$.pipe.apply(subject$, args as any).subscribe({ next(value) { const error = new EffectError('should not emit value', value); - setImmediate(() => { + // make a uncaught exception + setTimeout(() => { throw error; - }); + }, 0); }, complete() { const error = new EffectError('effect unexpected complete'); - setImmediate(() => { + // make a uncaught exception + setTimeout(() => { throw error; - }); + }, 0); }, error(error) { const effectError = new EffectError('effect uncaught error', error); - setImmediate(() => { + // make a uncaught exception + setTimeout(() => { throw effectError; - }); + }, 0); }, }); diff --git a/packages/common/infra/src/livedata/livedata.ts b/packages/common/infra/src/livedata/livedata.ts index 655515eaf3..058379940c 100644 --- a/packages/common/infra/src/livedata/livedata.ts +++ b/packages/common/infra/src/livedata/livedata.ts @@ -458,7 +458,8 @@ export class LiveData const subscription = this.subscribe(v => { if (predicate(v)) { resolve(v as any); - setImmediate(() => { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + Promise.resolve().then(() => { subscription.unsubscribe(); }); } diff --git a/packages/frontend/electron/renderer/shell/index.tsx b/packages/frontend/electron/renderer/shell/index.tsx index 3d1b4497e0..d9ee8332e1 100644 --- a/packages/frontend/electron/renderer/shell/index.tsx +++ b/packages/frontend/electron/renderer/shell/index.tsx @@ -1,4 +1,3 @@ -import 'setimmediate'; import '@affine/component/theme/global.css'; import '@affine/component/theme/theme.css'; import '@affine/core/bootstrap/preload'; diff --git a/packages/frontend/mobile/src/polyfill/set-immediate.ts b/packages/frontend/mobile/src/polyfill/set-immediate.ts deleted file mode 100644 index b8f042569a..0000000000 --- a/packages/frontend/mobile/src/polyfill/set-immediate.ts +++ /dev/null @@ -1 +0,0 @@ -import 'setimmediate'; diff --git a/packages/frontend/web/src/polyfill/set-immediate.ts b/packages/frontend/web/src/polyfill/set-immediate.ts deleted file mode 100644 index b8f042569a..0000000000 --- a/packages/frontend/web/src/polyfill/set-immediate.ts +++ /dev/null @@ -1 +0,0 @@ -import 'setimmediate';