I am somehow torn here. On one side I agree that before callOnce is best, but at the other maybe this check should be before the `then.call` (three lines down) not to pay the cost of the check if `val` does not look like a promise