 					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 {
+						if error == ECANCELED {
+							sendInterrupted(observer)
+						} else 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 {
					sendError(observer, .POSIXError(error))
				}

			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))
				}
