Rewrite reauthorization logic with C# 5 async