- Fixes #2060 - Ensure to return a future/promise implementation that does not fail with 'not registered to an event loop' error for registration operations - If there is no usable event loop available, GlobalEventExecutor.INSTANCE is used as a fallback. - Add VoidChannel, which is used when an instantiation of a channel fails.