checks that value is fn before treating it like a factory