It's an inner class because it's very specific to this adapter.

Yes, a general exception event hierarchy might be nice but, at some point, we'd have to rework the TCP events (which currently has an EXCEPTION enumeration). I guess it would make most sense to do that now since those events are new in 3.0 (M1 I think).

I am not sure what you mean by your last comment for this line (inject their own impl).