Suspend and Resume are a little questionable, why do we need them? They can make reasoning about threads way more challenging and can almost always be replaced by an explicit synchronization mechanism. http://reviews.llvm.org/D5110