`empty` and `drain` callbacks