Always need to keep the same waterfall argument order other .close() might be called on something that isn't an input stream in case an error is caught mid way