send stream: delegate cleanup to user