             try ensureLastOperationSucceeded()
         } catch let error as SystemError where received > 0 {
             throw TCPError.didReceiveDataWithError(error: error, received: receivedData)
-        } catch let error as SystemError {
-            throw error
         }
 
         return receivedData

            try ensureLastOperationSucceeded()
        } catch let error as SystemError where sent > 0 {
            throw TCPError.didSendDataWithError(error: error, remaining: Data(data.suffix(sent)))
        } catch let error as SystemError {
            throw error
        }

        if flush {

            try ensureLastOperationSucceeded()
        } catch let error as SystemError where received > 0 {
            throw TCPError.didReceiveDataWithError(error: error, received: receivedData)
        }

        return receivedData
