I think the sequencing is clearer in a for-comprehension. How does this look? It may require a few tweaks, but it should be roughly right.
```scala
for {
  ifModifiedSince <- request.headers.get(IF_MODIFIED_SINCE)
  lastModified <- assetInfo.parsedLastModified
  if !lastModified.after(ifModifiedSince)
} yield {
  NotModified.withHeaders(DATE -> df.print({new java.util.Date}.getTime)
}
```