updated asyncmap implementation