I think adding a third callback covers more complicated use cases.
If @txdv agrees, we could merge 0975d2eb0ddd7983b0b1704c80629838487e6ed4.