public abstract class AbstractChannelHandlerContext implements ChannelHandlerContext { ... @Override public ChannelPromise bind(SocketAddress localAddress, ChannelPromise promise) { ObjectUtil.checkNotNull(localAddress, "localAddress"); if (isNotValidPromise(promise)) { // canceled return promise; } final AbstractChannelHandlerContext next = findContextOutbound(); final EventLoop eventLoop = next.eventLoop(); if (eventLoop.inEventLoop()) { next.invokeBind(localAddress, promise); } else { safeExecute(eventLoop, () -> next.invokeBind(localAddress, promise), promise); } return promise; } private void invokeBind(SocketAddress localAddress, ChannelPromise promise) { try { ((ChannelOutboundHandler) handler()).bind(this, localAddress, promise); } catch (Throwable t) { promise.setFailure(t); } } }