We should document the args here: it either receives the arguments given to fail(), _or_ it receives an Error object if one of 'functions' throws something synchronously...