From d9446ebba60e706cf6dda6226163b966f5165326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kwa=C5=9Bniak?= Date: Fri, 3 Nov 2023 11:10:11 +0100 Subject: [PATCH] Remove isolate util --- src/task.ts | 7 +++---- src/utils.ts | 22 ---------------------- 2 files changed, 3 insertions(+), 26 deletions(-) delete mode 100644 src/utils.ts diff --git a/src/task.ts b/src/task.ts index 3adacd8..b2d54bb 100644 --- a/src/task.ts +++ b/src/task.ts @@ -1,6 +1,5 @@ -import { untrack } from "solid-js"; +import { runWithOwner, untrack } from "solid-js"; import { createObject } from "solid-proxies"; -import { isolate } from "./utils"; import { work } from "./work"; export enum TaskStatus { @@ -75,7 +74,7 @@ export class Task implements Promise { }); constructor(promiseFn: (signal: AbortSignal) => Promise) { - this.#promiseFn = promiseFn; + this.#promiseFn = (signal) => runWithOwner(null, () => promiseFn(signal))!; } then( @@ -201,5 +200,5 @@ export class Task implements Promise { export function createTask( promiseFn: (signal: AbortSignal) => Promise ): Task { - return new Task((signal) => isolate(() => promiseFn(signal))); + return new Task(promiseFn); } diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 42b0ce5..0000000 --- a/src/utils.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { runWithOwner } from "solid-js"; - -export function isolate(fn: () => T): T { - let error: unknown; - let hasError = false; - - const result = runWithOwner(null, () => { - try { - return fn(); - } catch (e) { - hasError = true; - error = e; - throw e; - } - })!; - - if (hasError) { - throw error; - } - - return result; -}