powershell doesn't flush stdout before a "break", sometimes even if you say [Console]::Out.Flush()

# outputs "hello":
try {
    @("1") | ForEach-Object {
        throw "fucking break doesn't work but this might"
    }
}
catch {}
write-output "hello"

# exits silently:
@("1") | ForEach-Object {
	break
}
write-output "hello"

# outputs list of members of array object:
@("1") | get-member

# exits silently:
@("1") | get-member
break

# exits silently:
$members = @("1") | get-member
write-output $members
break

# exits silently:
$members = @("1") | get-member
write-output $members
[Console]::Out.Flush()
break

# creates 'test.csv', indicating code above the break is still executing,
# but still exits silently. wtf?:
$members = @("1") | get-member
write-output $members
[Console]::Out.Flush()
write-output "flush dammit"
[Console]::Out.Flush()
$members | export-csv test.csv
write-output "flush dammit`n`n`n`n`nwtf"
[Console]::Out.Flush()
break