Copycat's thread model goes to some length to ensure asynchronous threads cannot be blocked by a client. However, the client is largely designed for smaller systems where the threads accessing the client are more tightly controlled. The Copycat client uses a thread model like that of ZooKeeper, where events are handled on an event thread, and when the event thread is blocked they're handled on the I/O thread. However, if both the event thread and the I/O thread are blocked, the client can hang, and in ONOS multiple blocking threads is a distinct possibility (and a common occurrence). So, Copycat's client should support a provided Executor for events to ensure I/O cannot be blocked by ONOS primitives.