fn called with input fn called with input fn called with original input done called with FN OUTPUT fn2 called with fn output done called with fn output from original input done called with FN2 OUTPUT