OTOH, I wonder if it'd be useful for failCallback to be passed some context about _which_ step failed.  I'm guessing the arguments will rarely be enough to disambiguate.  Should we pass it the index of the 'functions' call that failed or something like that?  Then we might need to clone/arrayify 'arguments' so that we can tack on another one.