docs: public static void cleanClose(StreamConnection connection, Closeable... additional) {
          try {
              connection.getSinkChannel().shutdownWrites();
              if (!connection.getSinkChannel().flush()) {
                  connection.getSinkChannel().setWriteListener(ChannelListeners.flushingChannelListener(new ChannelListener<ConduitStreamSinkChannel>() {
                      @Override
                      public void handleEvent(ConduitStreamSinkChannel channel) {
                          doDrain(connection, additional);
                      }
                  }, new ChannelExceptionHandler<ConduitStreamSinkChannel>() {
                      @Override
                      public void handleException(ConduitStreamSinkChannel channel, IOException exception) {
                          UndertowLogger.REQUEST_IO_LOGGER.ioException(exception);
                          IoUtils.safeClose(connection);
                          IoUtils.safeClose(additional);
                      }
                  }));
                  connection.getSinkChannel().resumeWrites();
              } else {
                  doDrain(connection, additional);
              }
  
          } catch (Throwable e) {
              if (e instanceof IOException) {
                  UndertowLogger.REQUEST_IO_LOGGER.ioException((IOException) e);
              } else {
                  UndertowLogger.REQUEST_IO_LOGGER.ioException(new IOException(e));
              }
              IoUtils.safeClose(connection);
              IoUtils.safeClose(additional);
          }
      }