Once the load timer has been scheduled, it is possible to remove all sources before the media resource selection algorithm runs. In some cases (in particular, after a decode error), this can result in a failed (or empty) load while retaining a previous ready state.
Since the network and ready states affect future load (and play) calls, we need to make sure that we end up in the correct state in this case. See bug 674716 for a situation where we got this wrong.
In general, SelectMediaResource() appears to assume that there cannot be a web media player when it is called. The entire loading process probably needs to be evaluated to determine a correct long-term fix.