It seems like inlining futures that aren't holding variables over the await point might solve a large part of these issues?