Previously, @alexcrichton had mentioned that some of these assertions should be bubbled up as errors. This change re-factors two such assertions, leaving others in this file as assertions since they represent code paths that we should avoid internally (not by external users).