function(cb){ search_v2(query, cb); }, actual: function(cb){ search_v3(query, cb); }, logAction: function(current_result, new_result){ // invoked when there is a difference in the results // (useful for logging) } }; feature_change(options, function(err, result){ // this is the original callback you were using for search v2 // err and result always come from search_v2 });