My fix was to manually disable the port on the router until they had the problem fixed. I am looking for a solution to automate this process in the event of an upstream failure.
It sounds like you're only receiving a default route from your provider. If you have sufficient RAM, then you could ask for partial or full routes. If your BGP peer becomes isolated from the rest of its network, then you should see routes disappearing from that session, leaving other routes to take over automatically.
Your provider's router should not send default route unconditionally specifically because of situations like yours. It should have a way to know that it has been isolated from the Internet, but they may not be willing to fix their BGP design "just for one customer."
Having a full BGP table stops this from happening because if their router cannot reach destination x.x.0.0/16 anymore, then the route disappears from BGP and your second-best path takes over.
I just never did like "ping + script" solution, because BGP is already designed to provide fault tolerance, and you shouldn't have to re-invent the wheel.