suspend fun <ERROR CLASS>.withETag(etag: String, putHeader: Boolean = true, block: suspend () -> Unit)

Checks the current etag value and pass it through conditions supplied by the remote client. Depending on the conditions, it produces 410 Precondition Failed or 304 Not modified responses when necessary. Otherwise, sets the ETag header and delegates to the block function

It never handles If-None-Match: * as it is related to non-etag logic (for example, Last modified checks). See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26 for more details