function call promises - naive implementation