Added return functionality, and also maid 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