No this is fine, and necessary.  If you read the implementation of `Concurrent.joined` carefully, you'll see that feeding EOF into the iteratee it returns (ie `it` in the above code) causes the enumerator it returns (ie `enum` in the above code) to redeem the future it returns (not in the above code, you return enum in the above code and then the call of that will pass their own iteratee into that, let's call that `it2`, and they'll get back this future).  But it doesn't feed the EOF into `it2`.  This is the behaviour we want.

So in this case, since you created the iteratee, it is your job to clean it up, which is what this call is doing.