func swapStreamRW(strm stream.Stream, compressor Compressor) error { return strm.UpdateRW( func(srwc io.ReadWriteCloser) (io.ReadWriteCloser, error) { writer := compressor.GetWriter(srwc) reader, err := compressor.GetReader(srwc) if err != nil { log.Println("Could not create compressed reader", err) if err := strm.WriteElement(&SetupFailedError{}); err != nil { return nil, err } return nil, err } return NewCompressionReadWriter(srwc, reader, writer), nil }) }