def METHOD_NAME(self):
    # Streaming output is still possible
    out = []
    proc = wait(gramex.cache.daemon(self.hello, first_line='hello', stream=out.append))
    [wait(future) for future in proc.wait_for_exit()]
    eq_(set(out), {self.msg('hello')})
    # Incorrect first line raises an error
    with assert_raises(AssertionError):
        proc = wait(gramex.cache.daemon(self.args, first_line='NOTHING'))
    [wait(future) for future in proc.wait_for_exit()]
    # Correct first line can be a string or regex
    proc = wait(gramex.cache.daemon(self.hello, first_line='hello'))
    [wait(future) for future in proc.wait_for_exit()]
    proc = wait(gramex.cache.daemon(self.args, first_line=re.compile(r'(OUT|ERR):\d\s*')))
    [wait(future) for future in proc.wait_for_exit()]