This method is a bit larger then I can get my head around. You may want to look at simplifying it somehow, or breaking some pieces out into other methods. Between the length of it and the async code, I think it's easy for issues to hide in it.