Note for self, these `process.nextTick` around the receiver calls are here because a synchronous exception will otherwise stop the following receiver calls to happen and the actual state error is not drawn out. In real life scenarios the data will always come into the receiver in separate ticks so this is a little more realistic any way.