Requests an asynchronous closes of the stream, releasing resources related to it. When the operation is finished callback will be called. You can then call InputStream.closeFinish to get the result of the operation.
For behaviour details see InputStream.close.
The asynchronous methods have a default fallback that uses threads to implement asynchronicity, so they are optional for inheriting classes. However, if you override one you must override all.