javascript wrap settimeout in promise