         self._service = service
         self.futureQueue = Queue("us.gnos.characteristic-future-\(cbCharacteristic.UUID.UUIDString)")
         self.ioQueue = Queue("us.gnos.characteristic-timeout-\(cbCharacteristic.UUID.UUIDString)")
-        self.readPromise = Promise<Characteristic>(queue:self.futureQueue)
         self.notificationStateChangedPromise = Promise<Characteristic>(queue:self.futureQueue)
         if let serviceProfile = ProfileManager.sharedInstance.serviceProfiles[service.uuid] {
             Logger.debug("creating characteristic for service profile: \(service.name):\(service.uuid)")

        Logger.debug("sequence \(sequence), timeout:\(timeout)")
        self.ioQueue.delay(timeout) {
            if sequence == self.writeSequence && self.writing {
                self.writing = false
                Logger.debug("timing out sequence=\(sequence), current writeSequence=\(self.writeSequence)")
                self.didWrite(BCError.characteristicWriteTimeout)
            } else {

            self.timeoutWrite(self.writeSequence, timeout:parameters.timeout)
        }
    }
    
    private func readNext() {
        if self.reading == false && self.readParameters.count > 0 {
            Logger.debug("read characteristic \(self.uuid.UUIDString)")
            let parameters = self.readParameters[0]
            self.readParameters.removeAtIndex(0)
            self.readValueForCharacteristic()
            self.reading = true
            ++self.readSequence
            self.timeoutRead(self.readSequence, timeout:parameters.timeout)
        }
    }
}
