On Thursday, 8 June 2017 at 14:13:53 UTC, Steven Schveighoffer wrote: > void foo(Mutex m, Data d) pure > { > synchronized(m) > { > // ... manipulate d > } // no guarantee m gets unlocked > } > > -Steve Isn't synchronized(m) not nothrow?