This cuts aways a little of the GObject boilerplate.
... which should never block, but rather return TRUE or FALSE immediately, depending on whether or not the waitable is ready.
... which provides methods for waiting on an object.