Available on python
new(?lock:EitherType<Lock, RLock>)
acquire(?blocking:Bool, ?timeout:Float):Bool
@:value({ n : 1 })notify(n:Int = 1):Void
notify_all():Void
release():Void
wait(?timeout:Float):Bool
wait_for(predicate:() ‑> Bool, ?timeout:Float):Bool