fun createListener3(onStarted: onStarted? = null, onConnected: onConnected? = null, onProgress: onProgress? = null, onCompleted: onCompleted? = null, onCanceled: onCanceled? = null, onWarn: onWarn? = null, onRetry: onRetry? = null, onError: onError? = null, onTerminal: () -> Unit = {}): DownloadListener3
onWarn - Only one of these four callbacks will be active and their default value are all null.
onTerminal - will be invoked after any of those four callbacks every time. If you
don't care onCanceled/onError/onCompleted/onWarn but you want to do something after
download finished, you can just provide this parameter.