Handling asynchronousity using a promise