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
}
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
}

View File

@ -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),
}