Requiring 'monitor' makes monitors reentrant. Whyit's not like that in the first place escapes me. Thanks to http://japgolly.blogspot.com.au/2012/04/ruby-mutex-reentrancy.html