Issue 1:
Note the issue was only appearing on Windows. So ideally someone on Windows would debug this. The first set is to uncomment the tests and see if you can repeat the failure.

deno/js/fetch_test.ts

Lines 50 to 161
in
570269b

// TODO(ry) The following tests work but are flaky. There's a race condition

// somewhere. Here is what one of these flaky failures looks like:

//

// test fetchPostBodyString_permW0N1E0R0

// assertEqual failed. actual = expected = POST /blah HTTP/1.1

// hello: World

// foo: Bar

// host: 127.0.0.1:4502

// content-length: 11

// hello world

// Error: actual: expected: POST /blah HTTP/1.1

// hello: World

// foo: Bar

// host: 127.0.0.1:4502

// content-length: 11

// hello world

// at Object.assertEqual (file:///C:/deno/js/testing/util.ts:29:11)

// at fetchPostBodyString (file

/*

function bufferServer(addr: string): deno.Buffer {

const listener = deno.listen("tcp", addr);

const buf = new deno.Buffer();

listener.accept().then(async conn => {

const p1 = buf.readFrom(conn);

const p2 = conn.write(

new TextEncoder().encode(

"HTTP/1.0 404 Not Found\r\nContent-Length: 2\r\n\r\nNF"

)

);

// Wait for both an EOF on the read side of the socket and for the write to

// complete before closing it. Due to keep-alive, the EOF won't be sent

// until the Connection close (HTTP/1.0) response, so readFrom() can't

// proceed write. Conversely, if readFrom() is async, waiting for the

// write() to complete is not a guarantee that we've read the incoming

// request.

await Promise.all([p1, p2]);

conn.close();

listener.close();

});

return buf;

}

testPerm({ net: true }, async function fetchRequest() {

const addr = "127.0.0.1:4501";

const buf = bufferServer(addr);

const response = await fetch(`http://${addr}/blah`, {

method: "POST",

headers: [["Hello", "World"], ["Foo", "Bar"]]

});

assertEqual(response.status, 404);

assertEqual(response.headers.get("Content-Length"), "2");

const actual = new TextDecoder().decode(buf.bytes());

const expected = [

"POST /blah HTTP/1.1\r\n",

"hello: World\r\n",

"foo: Bar\r\n",

`host: ${addr}\r\n\r\n`

].join("");

assertEqual(actual, expected);

});

testPerm({ net: true }, async function fetchPostBodyString() {

const addr = "127.0.0.1:4502";

const buf = bufferServer(addr);

const body = "hello world";

const response = await fetch(`http://${addr}/blah`, {

method: "POST",

headers: [["Hello", "World"], ["Foo", "Bar"]],

body

});

assertEqual(response.status, 404);

assertEqual(response.headers.get("Content-Length"), "2");

const actual = new TextDecoder().decode(buf.bytes());

const expected = [

"POST /blah HTTP/1.1\r\n",

"hello: World\r\n",

"foo: Bar\r\n",

`host: ${addr}\r\n`,

`content-length: ${body.length}\r\n\r\n`,

body

].join("");

assertEqual(actual, expected);

});

testPerm({ net: true }, async function fetchPostBodyTypedArray() {

const addr = "127.0.0.1:4503";

const buf = bufferServer(addr);

const bodyStr = "hello world";

const body = new TextEncoder().encode(bodyStr);

const response = await fetch(`http://${addr}/blah`, {

method: "POST",

headers: [["Hello", "World"], ["Foo", "Bar"]],

body

});

assertEqual(response.status, 404);

assertEqual(response.headers.get("Content-Length"), "2");

const actual = new TextDecoder().decode(buf.bytes());

const expected = [

"POST /blah HTTP/1.1\r\n",

"hello: World\r\n",

"foo: Bar\r\n",

`host: ${addr}\r\n`,

`content-length: ${body.byteLength}\r\n\r\n`,

bodyStr

].join("");

assertEqual(actual, expected);

});

*/

Issue 2:
Only happening occasionally - only observed on windows.

test fetchPostBodyTypedArray_permW0N1E0R0
HttpUser: connection closed
at maybeError (deno/js/errors.ts:38:12)
at handleAsyncMsgFromRust (deno/js/dispatch.ts:27:17)
test result: FAILED. 7 passed; 1 failed; 0 ignored; 0 measured; 206 filtered out
Error: There were 1 test failures.
at setTimeout (file:///C:/deno/js/testing/testing.ts:110:13)
at fire (deno/js/timers.ts:131:3)

ex: https://ci.appveyor.com/project/deno/deno/builds/20541747