toThrow is passing the exception from the onError handler out to the $apply function.

If we rethrow the exception in the onError handler, the runZoned runner picks it up and we never see it again.

The "toThrow == null" is there so we throw the first exception, since we can only throw one exception in the $apply function.  [ There should be a test for this behaviour.. ]