From d12a255cff4b4b62699131ff2d05d9091f025b6c Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 30 Dec 2024 00:51:31 +0100 Subject: [PATCH] implements io.Closer for readablestream.Reader --- internal/readablestream/reader.go | 13 ++++++++++++- request.go | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/readablestream/reader.go b/internal/readablestream/reader.go index 854f6fd..1842d4d 100644 --- a/internal/readablestream/reader.go +++ b/internal/readablestream/reader.go @@ -14,7 +14,7 @@ type Reader struct { off int } -var _ io.Reader = (*Reader)(nil) +var _ io.ReadCloser = (*Reader)(nil) func NewReader(r safejs.Value) *Reader { return &Reader{ @@ -83,3 +83,14 @@ func (r *Reader) Read(p []byte) (int, error) { return n, nil } + +func (r *Reader) Close() error { + p, err := r.value.Call("cancel") + if err != nil { + return err + } + + _, err = promise.Await(safejs.Unsafe(p)) + + return err +} diff --git a/request.go b/request.go index c8e82e8..4818aa0 100644 --- a/request.go +++ b/request.go @@ -34,7 +34,7 @@ func Request(uvalue js.Value) (*http.Request, error) { return nil, err } - var bodyReader io.Reader + var bodyReader io.ReadCloser if !body.IsNull() { // WORKAROUND: Firefox does not have request.body ReadableStream @@ -66,7 +66,7 @@ func Request(uvalue js.Value) (*http.Request, error) { req := &http.Request{ Method: method, URL: u, - Body: io.NopCloser(bodyReader), + Body: bodyReader, Header: make(http.Header), }