I think that instead of this, our new `close()` method should call `transactionCleanup()` (instead of it being deferred in `messageRouter()`) this wall all pending transactions are cleaned up when a connection closes (for whatever reason).