mapAsync implementation