 			let channel = dispatch_io_create(DISPATCH_IO_STREAM, self.readFD, self.queue) { error in
 				if error == 0 {
 					sendCompleted(observer)
+				} else if error == ECANCELED {
+					sendInterrupted(observer)
 				} else {
 					sendError(observer, .POSIXError(error))
 				}

					let dispatchData = dispatch_data_create(data.bytes, data.length, self.queue, nil)

					dispatch_io_write(channel, 0, dispatchData, self.queue) { (done, data, error) in
						if error != 0 {
							sendError(observer, .POSIXError(error))
						}
					}

			let channel = dispatch_io_create(DISPATCH_IO_STREAM, self.writeFD, self.queue) { error in
				if error == 0 {
					sendCompleted(observer)
				} else if error == ECANCELED {
					sendInterrupted(observer)
				} else {
					sendError(observer, .POSIXError(error))
				}
