     ] with-disposal
 ] must-fail
 
+! Test writing to a half-open pipe
 [ ] [
     1000 [
         utf8 <pipe> [

    ] with-stream
] unit-test

[ { } ] [ { } run-pipeline ] unit-test
[ { f } ] [ { [ f ] } run-pipeline ] unit-test
[ { "Hello" } ] [

    ] times
] unit-test

! Test non-blocking operation
[ ] [
    [
        2 <count-down> "count-down" set

        utf8 <pipe> &dispose
        utf8 <pipe> &dispose
        [
            [
                '[
                    _ stream-read1 drop
                    "count-down" get count-down
                ] in-thread
            ] bi@
            
            ! Give the threads enough time to start blocking on
            ! read
            1 seconds sleep
        ]
        ! At this point, two threads are blocking on read
        [ [ "Hi" over stream-write stream-flush ] bi@ ]
        ! At this point, both threads should wake up
        2bi

        "count-down" get await
    ] with-destructors
] unit-test

! 0 read should not block
[ f ] [
    [
