Make callbacks the same type so we can use chain futures together
Pass success & fail blocks instead of passing the whole future