'When called, return the instance which caused the event. Supports
timeout in milliseconds (defaulting to infinite). If the watcher
times out, :exc:`x_wmi_timed_out` is raised. This makes it easy to support
watching for multiple objects.'

def __call__(self, timeout_ms=(-1)):

    try:
        event = self.wmi_event.NextEvent(timeout_ms)
        if self.is_extrinsic:
            return _wmi_event(event, None, self.fields)
        else:
            return _wmi_event(event.Properties_('TargetInstance').Value, _wmi_object(event, property_map=self._event_property_map), self.fields)
    except pywintypes.com_error:
        handle_com_error()
