private void sendErrorAsync(int statusCode, String reasonPhrase) {
servletResponse.setHeader(HttpHeaders.Names.EXPIRES, null);
servletResponse.setHeader(HttpHeaders.Names.LAST_MODIFIED, null);
servletResponse.setHeader(HttpHeaders.Names.CACHE_CONTROL, null);
servletResponse.setHeader(HttpHeaders.Names.CONTENT_TYPE, null);
servletResponse.setHeader(HttpHeaders.Names.CONTENT_LENGTH, null);
setStatus(servletResponse, statusCode, Optional.of(reasonPhrase));
if (statusCode != HttpServletResponse.SC_NO_CONTENT &&
statusCode != HttpServletResponse.SC_NOT_MODIFIED &&
statusCode != HttpServletResponse.SC_PARTIAL_CONTENT &&
statusCode >= HttpServletResponse.SC_OK) {
servletResponse.setHeader(HttpHeaders.Names.CACHE_CONTROL, "must-revalidate,no-cache,no-store");
servletResponse.setContentType(MimeTypes.Type.TEXT_HTML_8859_1.toString());
byte[] errorContent = errorResponseContentCreator
.createErrorContent(servletRequest.getRequestURI(), statusCode, Optional.ofNullable(reasonPhrase));
servletResponse.setContentLength(errorContent.length);
servletOutputStreamWriter.sendErrorContentAndCloseAsync(ByteBuffer.wrap(errorContent));
} else {
servletResponse.setContentLength(0);
servletOutputStreamWriter.close();
}
}