Amtrak passenger train priority is an interesting question if you think about it from the perspective of someone who enjoys and supports rail transportation in general.
First, I'm pretty sure that the Amtrak law simply says that Amtrak trains are to be given priority at meets and junctions. I don't think it actually says "the host railroad has to dispatch its own trains in such a way that Amtrak's trains can always accelerate to the speed limit and stay there and keep schedules based on doing that all the time"* or "Amtrak trains can never go in the hole except to meet another Amtrak train". That's a matter for interpretation through regulations. I have seen an argument that since Amtrak trains average faster than freight trains on pretty much every route, they are getting priority, even though they are often late and even though they often have to wait. I didn't really like the argument, but I saw the point of view.
*Yes, most schedules are padded, but the padding is typically at the end of the run, maybe also before one or two major intermediate stations, and most of the segments are scheduled pretty ambitiously. Professional rail transportation planners have studied this and reported on it.
Next, it seems like Amtrak doesn't actually pay the railroads enough to make it worth the railroads' while to slow down their own trains to let Amtrak trains keep ambitious their schedules. Are the railroads' various privileges (subsidies and land grants 150 years ago, eminent domain to assemble some ROWs, laws that pretty much blame drivers and trespassers for crossing and pedestrian accidents without requiring expensive fences or serious gates as in some other countries, etc.) big enough to justify forcing the railroads to let Amtrak trains have the railroad without full compensation for the costs? Or to maintain the extra capacity needed to let Amtrak trains keep their schedules? In a case like Chi-STL it may look clear that the host railroad has taken a lot of free improvements and not delivered its part of the bargain, but that only applies to a few routes.
I tend to side with Amtrak, but these are complicated questions. The facts, the law, the goals, and the calculations are all in dispute.
And while I was writing Tadman made a great point. If Amtrak's equipment was in better shape, if trains weren't held for connecting trains, etc., Amtrak would be more predictable for the host railroads and there would be fewer delays. I often think Amtrak needs a few more qualified crews in some places, or better ways of predicting when they are needed. When a train is running late and the crew goes dead (like at Aurora, IL, once) and then you wait a couple hours for the crew, that seems like either there's no simple computer program watching all the crews' hours and calling relief crews in time OR there simply aren't any relief crews available. Maybe some kind of deal with host railroads to let Amtrak get a few local crews qualified on Amtrak equipment to help out when needed (of course they'd have to be on the extra board and that would mean constantly qualifying new crews so maybe it just wouldn't work, but it might be worth investigating). Maybe some work to get people on and off faster at intermediate stops -- e.g. does it really make sense to fill two cars for Champaign Urbana, or would it make more sense to spread those people over four cars and thus give them 2x as many doors to get on and off through? (A question to consider if they ever do reserved seats.) Just basically whatever Amtrak could do to eliminate its share of the delays would give it a better position to blame the railroads for the rest, but would also make Amtrak a better tenant/customer for the railroads. Of course a lot of this comes back to money -- a state of really good repair would reduce delays. So would automatic doors (on some routes, anyway)