test coverage for errors
check that source is aborted too
handle case where stream errors instead of opening
handle errors correctly
merged - follow with dominics changes to avoid merge conflicts