raises exception if background and wait_until_complete flags are not set...

... properly
Agreed - this is definitely a valid combination.  The "background" flag simply specifies if this is a foreground or background job.  The "wait_until_complete" flag specifies whether we're blocking until we get our response.  It is possible (and probably encouraged) to not block on a foreground job.