I think it's not standards conform, but sometimes it is desireable to cache remote errors like 404 etc. Below is a runtime patch that wraps _entry_disposition() so that it uses the Cache-Control header also for errnous responses.
fixes bug 1483903 (broken message id)
fixes bug 1474303 (timezone double offset)