use `finish` event to call end()
add writable stream test
no need to re-emit `finish` event on writable
add test for resolving after ending()