completed buy function async