code: @Override
    @SuppressWarnings("FutureReturnValueIgnored")
    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
      if (failCause != null) {
        promise.setFailure(failCause);
        ReferenceCountUtil.release(msg);
      } else {
        bufferedWrites.add(new ChannelWrite(msg, promise));
      }
    }
docs: Buffers the write until either {@link #writeBufferedAndRemove(ChannelHandlerContext)} is
  called, or we have somehow failed. If we have already failed in the past, then the write
  will fail immediately.