working promise wrapper on button tap