Move common code into ->fold_future

Not sure if this is really the right name but it's more accurate than
reduce(), thanks LeoNerd for the suggestion