stream: always invoke end(cb) callback
Ensure that the callback passed into end() is always invoked in order to avoid bug such as deadlock the user.
Checklist
-
make -j4 test
(UNIX), orvcbuild test
(Windows) passes -
tests and/or benchmarks are included -
documentation is changed or added -
commit message follows commit guidelines