Clean up stream disconnect tests.

Make sure we always call the `expect` function, even if we fail. That
gives us a nice failure message instead of "Async batch timed out".

Make sure we close the stream in each test if we fail. Previously, in
some IEs, a "basic disconnect" timeout without closing the stream seems
to cause a somewhat random subset of other tests to time out or
fail. (Possibly a per-domain connection limit?)