Neat!
Note that an authenticated koji session will probably not play nice with async use because of the callnum data.
I've never used twisted. I presume its xmlrpc lib handles the nil extension (otherwise you would almost certainly have seen lots of errors). I wonder if it can handle an i8 tag, which kojihub will now emit for large integers in some contexts.
Koji's faults can have many different fault codes, though yes 1000 is the most likely. The full list in near the beginning of koji/__init__.py.