Assuming we don't want to make changes to how crates.io the
wait_for_publish() function mentioned by @ratmice is probably the best you can do.
The underlying problem is that we don't have a mechanism to let the server asynchronously push events down to us. One possible idea is for crates.io to gain a pub-sub service where you can subscribe to be notified about certain events, then
cargo-release and friends would temporarily subscribe to notifications for just that package, do the release, then go to sleep until crates.io says it's been released.
How does docs.rs know when a new package has been published so it can generate docs? Is it just polling for changes every X minutes, too?