     /// - Parameters:
     ///   - session:    The session containing the stream task that closed reads.
     ///   - streamTask: The stream task that closed reads.
+    @available(iOS 9.0, OSX 10.11, *)
     public func urlSession(_ session: URLSession, readClosedFor streamTask: URLSessionStreamTask) {
         streamTaskOfSessionReadClosed?(streamTask, session)
     }

    public var sessionDidBecomeInvalid: SessionDidBecomeInvalid?
    /// Closure for `urlSession(_:didReceive:completionHandler:)` function in protocol `URLSessionDelegate`.
    public var sessionDidReceiveChallenge: SessionDidReceiveChallenge?
    
    /// Closure for `urlSession(_:task:willPerformHTTPRedirection:newRequest:completionHandler:)` function in protocol `URLSessionTaskDelegate`.
    public var taskOfSessionWillPerformHTTPRedirection: TaskOfSessionWillPerformHTTPRedirection?

    ///   - streamTask:   The stream task that has been completed.
    ///   - inputStream:  The created input stream. This InputStream object is unopened.
    ///   - outputStream: The created output stream. This OutputStream object is unopened
    @available(iOS 9.0, OSX 10.11, *)
    public func urlSession(_ session: URLSession, streamTask: URLSessionStreamTask, didBecome inputStream: InputStream, outputStream: OutputStream) {
        streamTaskOfSessionDidBecomeInOutStream?(streamTask, session, inputStream, outputStream)
    }
