these ::didXX() are called on the send threads - so they can block each other