about summary refs log tree commit diff stats
path: root/src/html
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2023-06-19 20:56:06 +0200
committerbptato <nincsnevem662@gmail.com>2023-06-19 20:56:06 +0200
commitb3e08ac443d5d010938be7ae9b9bf8c04ca55300 (patch)
treed6c4ed711fa6553a95ae7b1b2e77d1d5d4926bd2 /src/html
parent82fb1f70ab275884c42dd769b2af8f9df5389e88 (diff)
downloadchawan-b3e08ac443d5d010938be7ae9b9bf8c04ca55300.tar.gz
Reject fetch promise on network error
Instead of setting the non-standard res variable.
Diffstat (limited to 'src/html')
-rw-r--r--src/html/dom.nim7
-rw-r--r--src/html/env.nim2
2 files changed, 4 insertions, 5 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim
index 1fa3b043..3bf67b05 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -2396,14 +2396,13 @@ proc fetchClassicScript(element: HTMLScriptElement, url: URL,
     let loader = element.document.window.loader
     if loader.isSome:
       let request = createPotentialCORSRequest(url, RequestDestination.SCRIPT, cors)
-      loader.get.fetch(request).then(proc(r: Response): auto =
-        if r.res != 0 or r.body == nil:
-          #TODO remove res
+      loader.get.fetch(request).then(proc(r: Result[Response, JSError]): auto =
+        if r.isErr or r.get.body == nil:
           element.onComplete(ScriptResult(t: RESULT_NULL))
         else:
           #TODO use charset from content-type
           #TODO text() should decode
-          return r.text()
+          return r.get.text()
       ).then(proc(s: string) =
         let ss = newStringStream(s) #TODO unnecessary copy
         let cs = if cs == CHARSET_UNKNOWN: CHARSET_UTF_8 else: cs
diff --git a/src/html/env.nim b/src/html/env.nim
index a70508be..eba067a8 100644
--- a/src/html/env.nim
+++ b/src/html/env.nim
@@ -61,7 +61,7 @@ proc addNavigatorModule(ctx: JSContext) =
   ctx.registerType(PluginArray)
   ctx.registerType(MimeTypeArray)
 
-proc fetch(window: Window, req: Request): Promise[Response] {.jsfunc.} =
+proc fetch(window: Window, req: Request): FetchPromise {.jsfunc.} =
   if window.loader.isSome:
     return window.loader.get.fetch(req)