Make sure function 'and' gets a caller promise, add acceptance test

Close #3173