// log.warn('PuppetPadchatFirer', 'fireRoomLeave() room not found')
// return false
// }
// /**
// * FIXME: leaver maybe is a list
// * @lijiarui: I have checked, leaver will never be a list. If the bot remove 2 leavers at the same time, it will be 2 sys message, instead of 1 sys message contains 2 leavers.
// */
// let leaverContact: Contact | null, removerContact: Contact | null
// // log.error('PuppetPadchatFirer', 'fireRoomLeave() bot is removed from the room, but remover %s not found, event `room-leave` & `leave` will not be fired', remover)
// log.error('PuppetPadchatFirer', 'fireRoomLeave() bot removed someone from the room, but leaver %s not found, event `room-leave` & `leave` will not be fired', leaver)
// return false
// }
// }
// if (removerContact) {
// await removerContact.ready()
// }
// await leaverContact.ready()
// await room.ready()
// /**
// * FIXME: leaver maybe is a list
// * @lijiarui 2017: I have checked, leaver will never be a list. If the bot remove 2 leavers at the same time,
// * it will be 2 sys message, instead of 1 sys message contains 2 leavers.
// * @huan 2018 May: we need to generilize the pattern for future usage.