As @dsyme suggested here https://github.com/fsharp/fslang-design/issues/48#issuecomment-227407028, it's much simpler and "the right way" in general to implement the feature in `TypeChecker`, namely in `TcFunctionApplicationThen` function, at this point https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/TypeChecker.fs#L8274 We should port all the wonderful tests @forki created in his old PR https://github.com/Microsoft/visualfsharp/pull/13