Probably around the same place as the other response checks at the bottom of the main fetch algorithm, though browser behavior diverges a bit with regard to whether or not a navigation actually takes place, whether an error page is rendered, etc.
There's also some strangeness around the content-disposition header that bit us when we moved XFO up out of blink into Chrome's browser process: see https://crbug.com/610284 That header doesn't show up in Fetch either, though I'm not really sure it ought to?