implements io.Closer for readablestream.Reader

This commit is contained in:
Nico 2024-12-30 00:51:31 +01:00
parent a16a847b26
commit d12a255cff
2 changed files with 14 additions and 3 deletions

View File

@ -14,7 +14,7 @@ type Reader struct {
off int off int
} }
var _ io.Reader = (*Reader)(nil) var _ io.ReadCloser = (*Reader)(nil)
func NewReader(r safejs.Value) *Reader { func NewReader(r safejs.Value) *Reader {
return &Reader{ return &Reader{
@ -83,3 +83,14 @@ func (r *Reader) Read(p []byte) (int, error) {
return n, nil 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
}

View File

@ -34,7 +34,7 @@ func Request(uvalue js.Value) (*http.Request, error) {
return nil, err return nil, err
} }
var bodyReader io.Reader var bodyReader io.ReadCloser
if !body.IsNull() { if !body.IsNull() {
// WORKAROUND: Firefox does not have request.body ReadableStream // WORKAROUND: Firefox does not have request.body ReadableStream
@ -66,7 +66,7 @@ func Request(uvalue js.Value) (*http.Request, error) {
req := &http.Request{ req := &http.Request{
Method: method, Method: method,
URL: u, URL: u,
Body: io.NopCloser(bodyReader), Body: bodyReader,
Header: make(http.Header), Header: make(http.Header),
} }