title: Angular2 rxjs http.request.catch has strange behaviour for some http errors
body: <p>My http service does not catch correctly some http errors.
  The catch method has 2 different response objects ( see below ).</p>
  
  <pre><code>private fireRequest(request: Request): Observable&lt;any&gt; {
      return this.http.request(request)
      .switchMap((response: Response) =&gt; {
          const responseData = response.json() || [];
          return Observable.of(responseData);
      })
      .catch((response: Response) =&gt; {
          const res2 = response.json();
          // filters http errors from status 0 errors
          if (response.status &amp;&amp; response.status &gt; 0) {
              const res = response.json();
              return Observable.of&lt;any&gt;(res);
          }
          const unexpectedNetworkError = new 
                Error('commons.unexpected_network');
          return Observable.throw(unexpectedNetworkError);
      })
  }
  </code></pre>
  
  <p>Strange error behaviour.
  ( even in chrome network tab i do not see the http body )</p>
  
  <pre><code>// catch 404 error
  { 
    headers: Headers,
    ok: false,
    status: 0,
    statusText : "",
    type : 3,
    url : null,
    _body : ProgressEvent
  }
  </code></pre>
  
  <p>Correct error behaviour </p>
  
  <pre><code>// catch 401 error
  { 
    headers: Headers,
    ok: false,
    status: 401,
    statusText : "Unauthorized",
    type : 2,
    url : http://api.service/users,
    _body : { // json body}
  }
  </code></pre>