Added return functionality, and also made sure that it works for multiple awaits calls, also made sure that there are no collisions when two functions call the same function

Note that the garantee against coolision is only for single threaded applications