Remove throw and make more async