snoyberg/conduit — comment on commit 68a497551fbef934966be52065b9afb457974d85
File:  line 0
By meteficha:

I don't see it as too hackish given that ResourceT guarantees that the cleanup will be done sooner or laters. If the user is manually `bsource`ing, he must have a reason to do so. Maybe some note on `bsource`'s documentation stating that the user needs to manually `bsourceClose` it to free its resources earlier?

Another option is to have:

```haskell
-- | @keepOpen bs@ is the same as @bs@ but with
-- its 'bsourceClose' overridden to do nothing. Using
-- @keepOpen bs@ allows you to use @bs@ many
-- times without closing it.
--
-- Note that if you want to free @bs@'s resources earlier
-- in the 'ResourceT' monad, then you need to manually
-- call @bsourceClose bs@.
keepOpen :: BSource m output -> BSource m output
keepOpen bs = bs { bsourceClose = return () }
```