From ccfcb129958fe1231230df0530ccb4a33e4bc6de Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 18 May 2023 03:08:45 -0400 Subject: [PATCH] Implemented Promise requests using `PromiseYielder` instead of Coroutines. Replaced RSG with ProtoPromise in demo. Updated readme. --- README.md | 60 +- demo/Assets/MainScript.cs | 178 +- ...ise.3.0.1.meta => ProtoPromise.2.5.0.meta} | 5 +- .../lib.meta | 5 +- .../lib/net35.meta | 5 +- .../lib/net35/Release.meta} | 5 +- .../lib/net35/Release/ProtoPromise.dll | Bin 0 -> 280064 bytes .../lib/net35/Release/ProtoPromise.dll.meta} | 4 +- .../lib/net35/Release/ProtoPromise.pdb.meta} | 5 +- .../lib/net35/Release/ProtoPromise.xml | 8074 +++++++++++++++++ .../lib/net35/Release/ProtoPromise.xml.meta | 8 + .../ProtoPromiseUnityHelpers.2.5.0.meta | 9 + .../ProtoPromiseUnityHelpers.2.5.0/lib.meta | 9 + .../lib/net35.meta | 9 + .../lib/net35/Release.meta | 9 + .../Release/ProtoPromiseUnityHelpers.dll | Bin 0 -> 28672 bytes .../Release/ProtoPromiseUnityHelpers.dll.meta | 34 + .../Release/ProtoPromiseUnityHelpers.pdb.meta | 8 + .../Release/ProtoPromiseUnityHelpers.xml | 528 ++ .../Release/ProtoPromiseUnityHelpers.xml.meta | 8 + .../lib/net35/Proyecto26.RestClient.dll | Bin 28160 -> 29184 bytes .../RSG.Promise.3.0.1/RSG.Promise.3.0.1.nupkg | Bin 37430 -> 0 bytes .../lib/net35/RSG.Promise.dll | Bin 43520 -> 0 bytes .../lib/net35/RSG.Promise.dll.meta | 32 - .../lib/netstandard2.0/RSG.Promise.dll | Bin 43520 -> 0 bytes demo/Assets/packages.config | 3 +- src/Proyecto26.RestClient/Helpers/HttpBase.cs | 106 + .../RestClientPromise.cs | 194 +- 28 files changed, 9043 insertions(+), 255 deletions(-) rename demo/Assets/Packages/{RSG.Promise.3.0.1.meta => ProtoPromise.2.5.0.meta} (60%) rename demo/Assets/Packages/{RSG.Promise.3.0.1 => ProtoPromise.2.5.0}/lib.meta (60%) rename demo/Assets/Packages/{RSG.Promise.3.0.1 => ProtoPromise.2.5.0}/lib/net35.meta (60%) rename demo/Assets/Packages/{RSG.Promise.3.0.1/lib/netstandard2.0.meta => ProtoPromise.2.5.0/lib/net35/Release.meta} (60%) create mode 100644 demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.dll rename demo/Assets/Packages/{RSG.Promise.3.0.1/lib/netstandard2.0/RSG.Promise.dll.meta => ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.dll.meta} (90%) rename demo/Assets/Packages/{RSG.Promise.3.0.1/RSG.Promise.3.0.1.nupkg.meta => ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.pdb.meta} (56%) create mode 100644 demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.xml create mode 100644 demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.xml.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.pdb.meta create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml create mode 100644 demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml.meta delete mode 100644 demo/Assets/Packages/RSG.Promise.3.0.1/RSG.Promise.3.0.1.nupkg delete mode 100755 demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35/RSG.Promise.dll delete mode 100644 demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35/RSG.Promise.dll.meta delete mode 100755 demo/Assets/Packages/RSG.Promise.3.0.1/lib/netstandard2.0/RSG.Promise.dll diff --git a/README.md b/README.md index 17f1a48..a280bc2 100644 --- a/README.md +++ b/README.md @@ -31,15 +31,22 @@ RestClient.GetArray(api + "/posts", (err, res) => { But working with **Promises** we can improve our code, yay! 👏 ```csharp -RestClient.GetArray(api + "/posts").Then(response => { - EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson(response, true), "Ok"); - return RestClient.GetArray(api + "/todos"); -}).Then(response => { - EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson(response, true), "Ok"); - return RestClient.GetArray(api + "/users"); -}).Then(response => { - EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson(response, true), "Ok"); -}).Catch(err => EditorUtility.DisplayDialog ("Error", err.Message, "Ok")); +RestClient.GetArray(api + "/posts") + .Then(response => + { + EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson(response, true), "Ok"); + return RestClient.GetArray(api + "/todos"); + }) + .Then(response => + { + EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson(response, true), "Ok"); + return RestClient.GetArray(api + "/users"); + }) + .Then(response => { + EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson(response, true), "Ok"); + }) + .Catch((RequestException err) => EditorUtility.DisplayDialog ("Error", err.Message, "Ok")) + .Forget(); ``` ## Features 🎮 @@ -51,7 +58,7 @@ RestClient.GetArray(api + "/posts").Then(response => { - Automatic transforms for **JSON Arrays**. - Supports default **HTTP** Methods **(GET, POST, PUT, DELETE, HEAD, PATCH)** - Generic **REQUEST** method to create any http request -- Based on **Promises** for a better asynchronous programming. Learn about Promises [here](https://github.com/Real-Serious-Games/C-Sharp-Promise)! +- Based on **Promises** for a better asynchronous programming. Learn about Promises [here](https://github.com/timcassell/ProtoPromise)! - Utility to work during scene transition - Handle HTTP exceptions and retry requests easily - Open Source 🦄 @@ -80,7 +87,7 @@ Do you want to see this beautiful package in action? Download the demo [here](ht Download and install the **.unitypackage** file of the latest release published [here](https://github.com/proyecto26/RestClient/releases). ### UPM package -Make sure you had installed [C# Promise package](https://openupm.com/packages/com.rsg.promise/) or at least have it in your [openupm scope registry](https://openupm.com/). Then install **RestClient package** using this URL from **Package Manager**: `https://github.com/proyecto26/RestClient.git#upm` +Make sure you had installed [ProtoPromise package](https://openupm.com/packages/com.timcassell.protopromise/) or at least have it in your [openupm scope registry](https://openupm.com/). Then install **RestClient package** using this URL from **Package Manager**: `https://github.com/proyecto26/RestClient.git#upm` ### NuGet package Other option is download this package from **NuGet** with **Visual Studio** or using the **nuget-cli**, a **[NuGet.config](https://github.com/proyecto26/RestClient/blob/master/demo/NuGet.config)** file is required at the root of your **Unity Project**, for example: @@ -100,19 +107,19 @@ The default methods **(GET, POST, PUT, DELETE, HEAD)** are: ```csharp RestClient.Get("https://jsonplaceholder.typicode.com/posts/1").Then(response => { EditorUtility.DisplayDialog("Response", response.Text, "Ok"); -}); +}).Forget(); RestClient.Post("https://jsonplaceholder.typicode.com/posts", newPost).Then(response => { EditorUtility.DisplayDialog("Status", response.StatusCode.ToString(), "Ok"); -}); +}).Forget(); RestClient.Put("https://jsonplaceholder.typicode.com/posts/1", updatedPost).Then(response => { EditorUtility.DisplayDialog("Status", response.StatusCode.ToString(), "Ok"); -}); +}).Forget(); RestClient.Delete("https://jsonplaceholder.typicode.com/posts/1").Then(response => { EditorUtility.DisplayDialog("Status", response.StatusCode.ToString(), "Ok"); -}); +}).Forget(); RestClient.Head("https://jsonplaceholder.typicode.com/posts").Then(response => { EditorUtility.DisplayDialog("Status", response.StatusCode.ToString(), "Ok"); -}); +}).Forget(); ``` ## Handling during scene transition @@ -164,10 +171,10 @@ RestClient.Request(new RequestHelper { AssetBundle assetBundle = ((DownloadHandlerAssetBundle)response.Request.downloadHandler).assetBundle; EditorUtility.DisplayDialog("Status", response.StatusCode.ToString(), "Ok"); -}).Catch(err => { +}).Catch((RequestException err) => { var error = err as RequestException; EditorUtility.DisplayDialog("Error Response", error.Response, "Ok"); -}); +}).Forget(); ``` - Example downloading an audio file: @@ -182,9 +189,9 @@ RestClient.Get(new RequestHelper { AudioSource audio = GetComponent(); audio.clip = ((DownloadHandlerAudioClip)res.Request.downloadHandler).audioClip; audio.Play(); -}).Catch(err => { +}).Catch((RequestException err) => { EditorUtility.DisplayDialog ("Error", err.Message, "Ok"); -}); +}).Forget(); ``` With all the methods we have the possibility to indicate the type of response, in the following example we're going to create a class and the **HTTP** requests to load **JSON** data easily: @@ -206,13 +213,13 @@ public class User var usersRoute = "https://jsonplaceholder.typicode.com/users"; RestClient.Get(usersRoute + "/1").Then(firstUser => { EditorUtility.DisplayDialog("JSON", JsonUtility.ToJson(firstUser, true), "Ok"); -}); +}).Forget(); ``` * **GET Array (JsonHelper is an extension to manage arrays)** ```csharp RestClient.GetArray(usersRoute).Then(allUsers => { EditorUtility.DisplayDialog("JSON Array", JsonHelper.ArrayToJsonString(allUsers, true), "Ok"); -}); +}).Forget(); ``` Also we can create different classes for custom responses: @@ -227,13 +234,13 @@ public class CustomResponse ```csharp RestClient.Post(usersRoute, newUser).Then(customResponse => { EditorUtility.DisplayDialog("JSON", JsonUtility.ToJson(customResponse, true), "Ok"); -}); +}).Forget(); ``` * **PUT** ```csharp RestClient.Put(usersRoute + "/1", updatedUser).Then(customResponse => { EditorUtility.DisplayDialog("JSON", JsonUtility.ToJson(customResponse, true), "Ok"); -}); +}).Forget(); ``` ## Custom HTTP Headers, Params and Options 💥 @@ -260,7 +267,7 @@ var currentRequest = new RequestHelper { }; RestClient.GetArray(currentRequest).Then(response => { EditorUtility.DisplayDialog("Header", currentRequest.GetHeader("Authorization"), "Ok"); -}); +}).Forget(); ``` And we can know the status of the request and cancel it! @@ -305,7 +312,7 @@ RestClient.Post("www.api.com/endpoint", new User { }).Then(response => { EditorUtility.DisplayDialog("ID: ", response.id, "Ok"); EditorUtility.DisplayDialog("Date: ", response.date, "Ok"); -}); +}).Forget(); ``` - NodeJS as Backend (Using [Express](http://expressjs.com/es/starter/hello-world.html)) ```js @@ -319,6 +326,7 @@ router.post('/', function(req, res) { ``` ## Credits 👍 +* **ProtoPromise** [Robust and efficient library for management of asynchronous operations.](https://github.com/timcassell/ProtoPromise) * **C-Sharp-Promise:** [Promises library for C# for management of asynchronous operations.](https://github.com/Real-Serious-Games/C-Sharp-Promise) * **MyAPI:** [A template to create awesome APIs easily ⚡️](https://github.com/proyecto26/MyAPI) diff --git a/demo/Assets/MainScript.cs b/demo/Assets/MainScript.cs index d71ab10..4b87539 100644 --- a/demo/Assets/MainScript.cs +++ b/demo/Assets/MainScript.cs @@ -4,96 +4,120 @@ using Proyecto26; using System.Collections.Generic; -public class MainScript : MonoBehaviour { +public class MainScript : MonoBehaviour +{ + private readonly string basePath = "https://jsonplaceholder.typicode.com"; - private readonly string basePath = "https://jsonplaceholder.typicode.com"; - - private void LogMessage(string title, string message) { + private void LogMessage(string title, string message) + { #if UNITY_EDITOR - EditorUtility.DisplayDialog (title, message, "Ok"); + EditorUtility.DisplayDialog(title, message, "Ok"); #else Debug.Log(message); #endif - } - - public void Get(){ - - // We can add default request headers for all requests - RestClient.DefaultRequestHeaders["Authorization"] = "Bearer ..."; + } - RequestHelper requestOptions = null; + public void Get() + { + // We can add default request headers for all requests + RestClient.DefaultRequestHeaders["Authorization"] = "Bearer ..."; - RestClient.GetArray(basePath + "/posts").Then(res => { - this.LogMessage ("Posts", JsonHelper.ArrayToJsonString(res, true)); - return RestClient.GetArray(basePath + "/todos"); - }).Then(res => { - this.LogMessage ("Todos", JsonHelper.ArrayToJsonString(res, true)); - return RestClient.GetArray(basePath + "/users"); - }).Then(res => { - this.LogMessage ("Users", JsonHelper.ArrayToJsonString(res, true)); + RequestHelper requestOptions = null; - // We can add specific options and override default headers for a request - requestOptions = new RequestHelper { - Uri = basePath + "/photos", - EnableDebug = true, - Headers = new Dictionary { - { "Authorization", "Other token..." } - } - }; - return RestClient.GetArray(requestOptions); - }).Then(res => { - this.LogMessage("Header", requestOptions.GetHeader("Authorization")); + RestClient.GetArray(basePath + "/posts") + .Then(res => + { + this.LogMessage("Posts", JsonHelper.ArrayToJsonString(res, true)); + return RestClient.GetArray(basePath + "/todos"); + }) + .Then(res => + { + this.LogMessage("Todos", JsonHelper.ArrayToJsonString(res, true)); + return RestClient.GetArray(basePath + "/users"); + }) + .Then(res => + { + this.LogMessage("Users", JsonHelper.ArrayToJsonString(res, true)); - // And later we can clean the default headers for all requests - RestClient.ClearDefaultHeaders(); + // We can add specific options and override default headers for a request + requestOptions = new RequestHelper + { + Uri = basePath + "/photos", + EnableDebug = true, + Headers = new Dictionary { + { "Authorization", "Other token..." } + } + }; + return RestClient.GetArray(requestOptions); + }) + .Then(res => + { + this.LogMessage("Header", requestOptions.GetHeader("Authorization")); - }).Catch(err => this.LogMessage ("Error", err.Message)); - } + // And later we can clean the default headers for all requests + RestClient.ClearDefaultHeaders(); - public void Post(){ - - RestClient.Post(basePath + "/posts", new Post { - title = "My first title", - body = "My first message", - userId = 26 - }) - .Then(res => this.LogMessage ("Success", JsonUtility.ToJson(res, true))) - .Catch(err => this.LogMessage ("Error", err.Message)); - } + }) + .Catch((RequestException err) => this.LogMessage("Error", err.Message)) + .Forget(); + } - public void Put(){ + public void Post() + { + RestClient.Post(basePath + "/posts", new Post + { + title = "My first title", + body = "My first message", + userId = 26 + }) + .Then(res => this.LogMessage("Success", JsonUtility.ToJson(res, true))) + .Catch((RequestException err) => this.LogMessage("Error", err.Message)) + .Forget(); + } - RestClient.Put(new RequestHelper { - Uri = basePath + "/posts/1", - Body = new Post { - title = "My new title", - body = "My new message", - userId = 26 - }, - Retries = 5, - RetrySecondsDelay = 1, - RetryCallback = (err, retries) => { - Debug.Log(string.Format("Retry #{0} Status {1}\nError: {2}", retries, err.StatusCode, err)); - } - }, (err, res, body) => { - if(err != null){ - this.LogMessage ("Error", err.Message); - } - else{ - this.LogMessage ("Success", res.Text); - } - }); - } + public void Put() + { + RestClient.Put(new RequestHelper + { + Uri = basePath + "/posts/1", + Body = new Post + { + title = "My new title", + body = "My new message", + userId = 26 + }, + Retries = 5, + RetrySecondsDelay = 1, + RetryCallback = (err, retries) => + { + Debug.Log(string.Format("Retry #{0} Status {1}\nError: {2}", retries, err.StatusCode, err)); + } + }, (err, res, body) => + { + if (err != null) + { + this.LogMessage("Error", err.Message); + } + else + { + this.LogMessage("Success", res.Text); + } + }); + } - public void Delete(){ + public void Delete() + { - RestClient.Delete(basePath + "/posts/1", (err, res) => { - if(err != null){ - this.LogMessage ("Error", err.Message); - } - else{ - this.LogMessage ("Success", "Status: " + res.StatusCode.ToString()); - } - }); - } + RestClient.Delete(basePath + "/posts/1", (err, res) => + { + if (err != null) + { + this.LogMessage("Error", err.Message); + } + else + { + this.LogMessage("Success", "Status: " + res.StatusCode.ToString()); + } + }); + } } diff --git a/demo/Assets/Packages/RSG.Promise.3.0.1.meta b/demo/Assets/Packages/ProtoPromise.2.5.0.meta similarity index 60% rename from demo/Assets/Packages/RSG.Promise.3.0.1.meta rename to demo/Assets/Packages/ProtoPromise.2.5.0.meta index c7afffa..ec71f3c 100644 --- a/demo/Assets/Packages/RSG.Promise.3.0.1.meta +++ b/demo/Assets/Packages/ProtoPromise.2.5.0.meta @@ -1,10 +1,9 @@ fileFormatVersion: 2 -guid: dba11895d83524b8c8fb6596ae894932 +guid: 0eb1e48782473be4d8607d9fdc15c832 folderAsset: yes -timeCreated: 1542470878 +timeCreated: 1684393107 licenseType: Free DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/demo/Assets/Packages/RSG.Promise.3.0.1/lib.meta b/demo/Assets/Packages/ProtoPromise.2.5.0/lib.meta similarity index 60% rename from demo/Assets/Packages/RSG.Promise.3.0.1/lib.meta rename to demo/Assets/Packages/ProtoPromise.2.5.0/lib.meta index 291ef9b..1dd2371 100644 --- a/demo/Assets/Packages/RSG.Promise.3.0.1/lib.meta +++ b/demo/Assets/Packages/ProtoPromise.2.5.0/lib.meta @@ -1,10 +1,9 @@ fileFormatVersion: 2 -guid: 99add3d99d22e40bf980eaf56dfbc0af +guid: 045bccd7cb0f07a4a9cf21e4afd2b2b5 folderAsset: yes -timeCreated: 1542470879 +timeCreated: 1684393107 licenseType: Free DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35.meta b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35.meta similarity index 60% rename from demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35.meta rename to demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35.meta index 5ea562f..7c630c1 100644 --- a/demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35.meta +++ b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35.meta @@ -1,10 +1,9 @@ fileFormatVersion: 2 -guid: 740e94469b97441ce93cf884d0cc1dd0 +guid: 93cec50c67d7b0d4286f213ecb531fea folderAsset: yes -timeCreated: 1542470879 +timeCreated: 1684393107 licenseType: Free DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/demo/Assets/Packages/RSG.Promise.3.0.1/lib/netstandard2.0.meta b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release.meta similarity index 60% rename from demo/Assets/Packages/RSG.Promise.3.0.1/lib/netstandard2.0.meta rename to demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release.meta index a68a029..0ac56fa 100644 --- a/demo/Assets/Packages/RSG.Promise.3.0.1/lib/netstandard2.0.meta +++ b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release.meta @@ -1,10 +1,9 @@ fileFormatVersion: 2 -guid: 85673716972994e1fa3fd691e694b47e +guid: 6e6d5ba4841d513448988d3b5b88973f folderAsset: yes -timeCreated: 1542470879 +timeCreated: 1684393108 licenseType: Free DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.dll b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.dll new file mode 100644 index 0000000000000000000000000000000000000000..9fe4ff9b3596820357b1fe697ae1e4966dea468f GIT binary patch literal 280064 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

vF{W6J}LKpNw;701L8j*=?;kf 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 + + + ProtoPromise + + + +

+ Represents a callback delegate that has been registered with a . + + + + + FOR INTERNAL USE ONLY! + + + + + Get the associated with this . + + + + + Get whether the callback is registered. + + + + + Get whether the callback is registered and whether the associated is requesting cancelation as an atomic operation. + + true if this is registered, false otherwise + true if the associated is requesting cancelation, false otherwise + + + + Try to unregister the callback from the associated . Returns true if the callback was successfully unregistered, false otherwise. + + true if the callback was previously registered and the associated not yet canceled and the associated not yet disposed, false otherwise + + + + Try to unregister the callback from the associated . Returns true if the callback was successfully unregistered, false otherwise. + will be true if the associated is requesting cancelation, false otherwise. + + true if the associated is requesting cancelation, false otherwise + true if the callback was previously registered and the associated not yet canceled or disposed, false otherwise + + + + Try to unregister the callback from the associated . + If the callback is currently executing, this method will wait until it completes, + except in the degenerate case where the callback itself is unregistering itself. + + + + + Try to unregister the callback from the associated . + The returned will be resolved once the associated callback + is unregistered without having executed or once it's finished executing, except + in the degenerate case where the callback itself is unregistering itself. + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + Cancelation source used to cancel operations. + + + + + Create a new . + Note: the new must be disposed when you are finished with it. + + + + + Create a new that will be canceled either when you cancel it, or when the given token is canceled (with the same value), whichever is first. + Note: the new still must be disposed when you are finished with it. + + The cancelation token to observe. + A new that is linked to the source token. + + + + Create a new that will be canceled either when you cancel it, or when any of the given tokens are canceled (with the same value), whichever is first. + Note: the new still must be disposed when you are finished with it. + + The first cancelation token to observe. + The second cancelation token to observe. + A new that is linked to the source token. + + + + Create a new that will be canceled either when you cancel it, or when any of the given tokens are canceled (with the same value), whichever is first. + Note: the new still must be disposed when you are finished with it. + + An array that contains the cancelation token instances to observe. + A new that is linked to the source token. + + + + Get the associated with this . + + + + + Get whether or not this is valid. + A is valid if it was created from and was not disposed. + + + + + Gets whether cancelation has been requested for this source. + + + + + Try to communicate a request for cancelation, and invoke all callbacks that are registered to the associated . Returns true if successful, false otherwise. + + True if this is valid and was not already canceled, false otherwise. + + + + Communicate a request for cancelation, and invoke all callbacks that are registered to the associated . + + + + + + Try to release all resources used by this . This instance will no longer be valid. + + True if this is valid and was not already disposed, false otherwise. + + + + Release all resources used by this . This instance will no longer be valid. + + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + Propagates notification that operations should be canceled. + + + + + Returns an empty . + + + + + FOR INTERNAL USE ONLY! + + + + + Get a token that is already in the canceled state. + + + + + Gets whether this token is capable of being in the canceled state. + + + A is capable of being in the canceled state when the it is attached to has not been disposed, + or if the token is already canceled and it has been retained and not yet released. + + + + + Gets whether cancelation has been requested for this token. + + + + + If cancelation was requested on this token, throws a . + + + + + + Try to register a delegate that will be invoked when this is canceled. + If this is already canceled, the callback will be invoked immediately and this will return true. + + The delegate to be executed when the is canceled. + The instance that can be used to unregister the callback. + true if was registered successfully, false otherwise. + + + + Try to capture a value and register a delegate that will be invoked with the captured value when this is canceled. + If this is already canceled, the callback will be invoked immediately and this will return true. + + The value to pass into . + The delegate to be executed when the is canceled. + The instance that can be used to unregister the callback. + true if was registered successfully, false otherwise. + + + + Try to register a cancelable that will be canceled when this is canceled. + If this is already canceled, it will be canceled immediately and this will return true. + + The cancelable to be canceled when the is canceled. + The instance that can be used to unregister the callback. + true if was registered successfully, false otherwise. + + + + Register a delegate that will be invoked when this is canceled. + If this is already canceled, the callback will be invoked immediately. + + The delegate to be executed when the is canceled. + The instance that can be used to unregister the callback. + + + + Capture a value and register a delegate that will be invoked with the captured value when this is canceled. + If this is already canceled, the callback will be invoked immediately. + + The value to pass into . + The delegate to be executed when the is canceled. + The instance that can be used to unregister the callback. + + + + Register a cancelable that will be canceled when this is canceled. + If this is already canceled, it will be canceled immediately. + + The cancelable to be canceled when the is canceled. + The instance that can be used to unregister the callback. + + + + Try to retain this instance. Returns true if successful, false otherwise. + If successful, allows continued use of this instance, even after the associated has been disposed, until this is released. + If successful, this should be paired with a call to . + + + + + Release this instance. Allows resources to be released when the associated is disposed (if has been called for all calls). + This should always be paired with a call to . + + + + + + Gets a retainer that facilitates retaining and releasing this instance. This is intended to be used with a using block `using (token.GetRetainer()) { ... }`. + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + A helper type that facilitates retaining and releasing s with a using statement. + This is intended to be used instead of and to reduce boilerplate code. + + + + + Releases the token if it was retained. This instance is no longer valid after it has been disposed, and should not continue to be used. + + + + + Helpful extensions to convert promises to and from other asynchronous types. + + + + + Members of this type are meant for INTERNAL USE ONLY! Do not use in user code! Use the documented public APIs. + + + + + Doesn't actually move next, just returns if Current is valid. + This allows the function to be branch-less. Useful for foreach loops. + + + + + Actually moves next and returns current. + + + + + This structure is unsuitable for general purpose. + + + + + Use instead of Monitor.Enter(object). + Must not be readonly. + + + + + This structure is unsuitable for general purpose. + + + + + This structure is unsuitable for general purpose. + + + + + This structure is unsuitable for general purpose. + + + + Represents one or more errors that occur during application execution. + + is used to consolidate multiple failures into a single, throwable + exception object. + + + + + Initializes a new instance of the class with + references to the inner exceptions that are the cause of this exception. + + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Initializes a new instance of the class with a specified error + message and references to the inner exceptions that are the cause of this exception. + + The error message that explains the reason for the exception. + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Allocates a new aggregate exception with the specified message and list of inner exceptions. + + The error message that explains the reason for the exception. + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Returns the that is the root cause of this exception. + + + + + Gets a read-only collection of the instances that caused the + current exception. + + + + + Invokes a handler on each contained by this . + + The predicate to execute for each exception. The predicate accepts as an + argument the to be processed and returns a Boolean to indicate + whether the exception was handled. + + Each invocation of the returns true or false to indicate whether the + was handled. After all invocations, if any exceptions went + unhandled, all unhandled exceptions will be put into a new + which will be thrown. Otherwise, the method simply returns. If any + invocations of the throws an exception, it will halt the processing + of any more exceptions and immediately propagate the thrown exception as-is. + + An exception contained by this was not handled. + The argument is + null. + + + + Flattens an instances into a single, new instance. + + A new, flattened . + + If any inner exceptions are themselves instances of + , this method will recursively flatten all of them. The + inner exceptions returned in the new + will be the union of all of the the inner exceptions from exception tree rooted at the provided + instance. + + + + + Creates and returns a string representation of the current . + + A string representation of the current exception. + + + + This helper property is used by the DebuggerDisplay. + + Note that we don't want to remove this property and change the debugger display to {InnerExceptions.Count} + because DebuggerDisplay should be a single property access or parameterless method call, so that the debugger + can use a fast path without using the expression evaluator. + + See http://msdn.microsoft.com/en-us/library/x810d419.aspx + + + + + Provides support for spin-based waiting. + + + + encapsulates common spinning logic. On single-processor machines, yields are + always used instead of busy waits, and on computers with Intel™ processors employing Hyper-Threading™ + technology, it helps to prevent hardware thread starvation. SpinWait encapsulates a good mixture of + spinning and true yielding. + + + is a value type, which means that low-level code can utilize SpinWait without + fear of unnecessary allocation overheads. SpinWait is not generally useful for ordinary applications. + In most cases, you should use the synchronization classes provided by the .NET Framework, such as + . For most purposes where spin waiting is required, however, + the type should be preferred over the method. + + + While SpinWait is designed to be used in concurrent applications, it is not designed to be + used from multiple threads concurrently. SpinWait's members are not thread-safe. If multiple + threads must spin, each should use its own instance of SpinWait. + + + + + + Gets the number of times has been called on this instance. + + + + + Gets whether the next call to will yield the processor, triggering a + forced context switch. + + Whether the next call to will yield the processor, triggering a + forced context switch. + + On a single-CPU machine, always yields the processor. On machines with + multiple CPUs, may yield after an unspecified number of calls. + + + + + Performs a single spin. + + + This is typically called in a loop, and may change in behavior based on the number of times a + has been called thus far on this instance. + + + + + Resets the spin counter. + + + This makes and behave as though no calls + to had been issued on this instance. If a instance + is reused many times, it may be useful to reset it to avoid yielding too soon. + + + + + Spins until the specified condition is satisfied. + + A delegate to be executed over and over until it returns true. + The argument is null. + + + + Spins until the specified condition is satisfied or until the specified timeout is expired. + + A delegate to be executed over and over until it returns true. + + A that represents the number of milliseconds to wait, + or a TimeSpan that represents -1 milliseconds to wait indefinitely. + True if the condition is satisfied within the timeout; otherwise, false + The argument is null. + is a negative number + other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than + . + + + + Spins until the specified condition is satisfied or until the specified timeout is expired. + + A delegate to be executed over and over until it returns true. + The number of milliseconds to wait, or (-1) to wait indefinitely. + True if the condition is satisfied within the timeout; otherwise, false + The argument is null. + is a + negative number other than -1, which represents an infinite time-out. + + + + A helper class to get the number of processors, it updates the numbers of processors every sampling interval. + + + + + Gets the number of available processors + + + + + Gets whether the current machine has only a single processor. + + + + + A helper class to capture a start time using Environment.TickCout as a time in milliseconds, also updates a given timeout bu subtracting the current time from + the start time + + + + + Returns the Environment.TickCount as a start time in milliseconds as a uint, TickCount tools over from postive to negative every ~ 25 days + then ~25 days to back to positive again, uint is sued to ignore the sign and double the range to 50 days + + + + + + Helper function to measure and update the elapsed time + + The first time (in milliseconds) observed when the wait started + The orginal wait timeoutout in milliseconds + The new wait time in milliseconds, -1 if the time expired + + + + Cancelable interface + + + + + Cancel this instance. + + + + + Retainable interface + + + + + Retain this instance. + This should always be paired with a call to + + + + + Release this instance. + This should always be paired with a call to + + + + + A represents the eventual result of an asynchronous operation. + The primary ways of interacting with a are via the `await` keyword in an async function, + or through its then method, which registers callbacks to be invoked when the is resolved, + or the reason why the cannot be resolved. + + + + Gets an awaiter for this . + This method is intended for compiler use rather than use directly in code. + The awaiter. + + + Gets an awaiter for this that suppresses throws and returns a instead. + The awaiter. + Use as `var resultContainer = await promise.AwaitNoThrow();` + + + + Gets an awaiter for this that supports reporting progress to the async or function. + The progress reported will be lerped from to . Both values must be between 0 and 1 inclusive. + + The awaiter. + Use as `await promise.AwaitWithProgress(minProgress, maxProgress);` + + + + Gets an awaiter for this that supports reporting progress to the async or function. + The progress reported will be lerped from its current progress to . must be between 0 and 1 inclusive. + + The awaiter. + + If the previously awaited promise did not complete successfully, minProgress will be set to the previous instead of current. + Use as `await promise.AwaitWithProgress(maxProgress);` + + + + + Gets an awaiter for this that supports reporting progress to the async or function, + and suppresses throws and returns a instead. + The progress reported will be lerped from to . Both values must be between 0 and 1 inclusive. + + The awaiter. + Use as `var resultContainer = await promise.AwaitWithProgressNoThrow(minProgress, maxProgress);` + + + + Gets an awaiter for this that supports reporting progress to the async or function, + and suppresses throws and returns a instead. + The progress reported will be lerped from its current progress to . must be between 0 and 1 inclusive. + + The awaiter. + + If the previously awaited promise did not complete successfully, minProgress will be set to the previous instead of current. + Use as `var resultContainer = await promise.AwaitWithProgressNoThrow(maxProgress);` + + + + + At what granularity should stack traces be captured when a promise is created or rejected. Higher values are more costly, but give more information for debugging purposes. + + + + + Don't track any causality traces. + + + + + Track causality only when Deferred.Reject is called. + + + + + Track causality when Deferred.Reject is called and every time a promise is created or a delegate is added to a promise (i.e. with .Then or .Progress). + + NOTE: This can be extremely expensive, so you should only enable this if you ran into an error and you are not sure where it came from. + + + + + Promise configuration. Configuration settings affect the global behaviour of promises. + + + + + The distance between 1 and the largest value smaller than 1. Progress reports use full 32-bit float precision. + + + + + Should objects be pooled or not. If this is enabled, objects can be reused to reduce GC pressure. + + + + + Set how causality is traced in DEBUG mode. Causality traces are readable from an UnhandledException's Stacktrace property. + + + + + Uncaught rejections get routed through this delegate. + + + This must be set to a non-null delegate, otherwise uncaught rejections will be thrown in the or . + + + + + The used to marshal work to the UI thread. + + It is recommended to set this at application startup. It is also recommended to set at the same time. + + + Promise.Config.ForegroundContext = SynchronizationContext.Current; + + + + + + The used to marshal work to a background thread. If this is null, is used. + + + + + When enabled, objects are supported in async and async methods. + + + This is disabled by default, and cannot be disabled after enabled. + + + + + Deferred base. An instance of this can be used to report progress and reject or cancel the attached . + You must use or to resolve the attached . + + + + + The attached that this controls. + + + + + Get whether or not this instance and the attached are valid. + + + + + Get whether or not this instance is valid and the attached is still pending. + + + + + Internal use for implicit cast operator. + + + + + Cast this to . Throws an if it cannot be casted. + + + + + + Cast this to . Returns an invalid if it cannot be casted. + + + + + Cast this to . Throws an if it cannot be casted. + + + + + + Cast this to . Returns an invalid if it cannot be casted. + + + + + Reject the linked with . + + + + + + Try to reject the linked with . + Returns true if successful, false otherwise. + + + + + Cancel the linked . + + + + + + Try to cancel the linked . + Returns true if successful, false otherwise. + + + + + Report progress between 0 and 1. + + + + + + + Try to report progress between 0 and 1. + Returns true if successful, false otherwise. + + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + An instance of this is used to report progress and resolve, reject, or cancel the attached . + + + + + The attached that this controls. + + + + + Get whether or not this instance and the attached are valid. + + + + + Get whether or not this instance is valid and the attached is still pending. + + + + + Internal use. + + + + + Returns a new instance that is linked to and controls the state of a new . + + + + + Returns a new instance that is linked to and controls the state of a new . + If the is canceled while the is pending, it and the will be canceled. + + + + + Resolve the linked . + + + + + + Try to resolve the linked . + Returns true if successful, false otherwise. + + + + + Reject the linked with . + + + + + + Try to reject the linked with . + Returns true if successful, false otherwise. + + + + + Cancel the linked . + + + + + + Try to cancel the linked . + Returns true if successful, false otherwise. + + + + + Report progress between 0 and 1. + + + + + + + Try to report progress between 0 and 1. + Returns true if successful, false otherwise. + + + + + + Cast to . + + + + + Cast to . + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + The state of the promise. + + + + + The promise has not yet completed. (The operation is in progress.) + + + + + The promise completed successfully. (The operation ran to completion with no errors.) + + + + + The promise failed to complete due to a reason. + + + + + The promise was canceled before the operation was able to complete. + + + + + The delegate type used for . + + The container from which the promise's state and result or reason can be extracted. + + + + The delegate type used for . + + The value that was passed to . + The container from which the promise's state and result or reason can be extracted. + + + + The delegate type used for . + + The container from which the promise's state and result or reason can be extracted. + + + + The delegate type used for . + + The value that was passed to . + The container from which the promise's state and result or reason can be extracted. + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + + Promise manager. This can be used to clear pooled objects (if enabled). + + + + + Clears all currently pooled objects. Does not affect pending or preserved promises. + + + + + The for the current thread, used internally to execute continuations synchronously if the supplied context matches this. + + It is recommended to set this at application startup, at the same as you set . + + + + Gets whether this instance is valid to be awaited. + + + + + Mark this as awaited and get a new that inherits the state of this and can be awaited multiple times until is called on it. + must be called when you are finished with it. + NOTE: You should not return a preserved from a public API. Use to get a that is publicly safe. + + + + + Mark this as awaited and prevent any further awaits or callbacks on this. + NOTE: It is imperative to terminate your promise chains with Forget so that any uncaught rejections will be reported and objects repooled (if pooling is enabled). + + + + + Mark this as awaited and wait for the operation to complete. + If the operation was rejected or canceled, the appropriate exception will be thrown. + + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + Mark this as awaited and wait for the operation to complete, without throwing. Returns a that wraps the completion state and reason. + + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + Mark this as awaited and wait for the operation to complete with a specified timeout. + This will return if the operation completed successfully before the timeout expired, otherwise. + If the operation was rejected or canceled, the appropriate exception will be thrown. + + + If a representing -1 millisecond is specified for the timeout parameter, this method blocks indefinitely until the operation is complete. + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + + Mark this as awaited and wait for the operation to complete with a specified timeout. + This will return if the operation completed successfully before the timeout expired, otherwise. + If the operation was rejected or canceled, the appropriate exception will be thrown. + + + If a representing -1 millisecond is specified for the timeout parameter, this method blocks indefinitely until the operation is complete. + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + + Mark this as awaited and wait for the operation to complete with a specified timeout, without throwing. wraps the completion state and reason. + This will return if the operation completed successfully before the timeout expired, otherwise. + + + If a representing -1 millisecond is specified for the timeout parameter, this method blocks indefinitely until the operation is complete. + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + + Mark this as awaited and get a new that inherits the state of this and can be awaited once. + Preserved promises are unsafe to return from public APIs. Use to get a that is publicly safe. + is safe to call even if you are unsure if this is preserved. + + + + + Mark this as awaited and schedule the next continuation to execute on the context of the provided option. + Returns a new that inherits the state of this, or will be canceled if/when the is canceled before this is complete. + + Indicates on which context the next continuation will be executed. + If true, forces the next continuation to be invoked asynchronously. If is , this value will be ignored. + If canceled before this is complete, the returned will be canceled, and the cancelation will propagate on the context of the provided . + + + + Mark this as awaited and schedule the next continuation to execute on . + Returns a new that inherits the state of this, or will be canceled if/when the is canceled before this is complete. + + The context on which context the next continuation will be executed. If null, will be used. + If true, forces the next continuation to be invoked asynchronously. + If canceled before this is complete, the returned will be canceled, and the cancelation will propagate on the provided . + + + + Returns a new that inherits the state of this, or will be canceled if/when the is canceled before the continuation is invoked. + + + + + Add a progress listener. Returns a new . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be reported with progress that is normalized between 0 and 1 on the context of the provided option. + Indicates on which context will be reported. + If true, forces progress invoke to happen asynchronously. If is , this value will be ignored. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a progress listener. Returns a new . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be reported with progress that is normalized between 0 and 1 on the context of the provided option. + The context on which will be reported. If null, will be used. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a progress listener. Returns a new . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be invoked with progress that is normalized between 0 and 1 on the context of the provided option. + Indicates on which context will be invoked. + If true, forces progress invoke to happen asynchronously. If is , this value will be ignored. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a progress listener. Returns a new . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be invoked with progress that is normalized between 0 and 1 on the context of the provided option. + The context on which will be invoked. If null, will be used. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a finally callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked. + If throws an exception, the new will be rejected with that exception, + otherwise it will be resolved, rejected, or canceled with the same value or reason as this. + + + + + Add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a progress listener. Returns a new . + will be invoked that is normalized between 0 and 1 on the context of the provided option. + + If/when this is resolved, will be invoked with and 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, will stop being invoked. + + The value that will be passed to . + Will be invoked with with and progress that is normalized between 0 and 1 on the context of the provided option. + Indicates on which context will be invoked. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Capture a value and add a progress listener. Returns a new . + + If/when this is resolved, will be invoked with and 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + The value that will be passed to . + Will be invoked with with and progress that is normalized between 0 and 1 on the context of the provided option. + The context on which will be invoked. If null, will be used. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Capture a value and add a finally callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with . + If throws an exception, the new will be rejected with that exception, + otherwise it will be resolved, rejected, or canceled with the same value or reason as this. + + + + + Capture a value and add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + Gets the string representation of this instance. + + The string representation of this instance. + + + Executes a for loop in which iterations may run in parallel on . + The start index, inclusive. + The end index, exclusive. + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + A promise that represents the entire for each operation. + + + Executes a for loop in which iterations may run in parallel on . + The start index, inclusive. + The end index, exclusive. + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + A promise that represents the entire for each operation. + + + Executes a for loop in which iterations may run in parallel on . + The start index, inclusive. + The end index, exclusive. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + A promise that represents the entire for each operation. + + + Executes a for loop in which iterations may run in parallel on . + The start index, inclusive. + The end index, exclusive. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel on . + The type of the data in the source. + An enumerable data source. + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel. + The type of the data in the source. + An enumerable data source. + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel on . + The type of the data in the source. + The type of the captured value. + An enumerable data source. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel. + The type of the data in the source. + The type of the captured value. + An enumerable data source. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + + Runs in sequence, returning a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Runs in sequence, returning a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + If the is canceled before all of the have been invoked, + the will stop being invoked, and the returned will be canceled. + + + + + Runs in sequence, returning a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Runs in sequence, returning a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + If the is canceled before all of the have been invoked, + the will stop being invoked, and the returned will be canceled. + + + + + Runs in sequence, returning a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Runs in sequence, returning a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + If the is canceled before all of the have been invoked, + the will stop being invoked, and the returned will be canceled. + + + + + Returns a new that will resolve on the foreground context. + + If true, forces the context switch to happen asynchronously. + + + + Returns a new that will resolve on the background context. + + If true, forces the context switch to happen asynchronously. + + + + Returns a new that will resolve on the provided + + The context to switch to. If null, will be used. + If true, forces the context switch to happen asynchronously. + + + + Switch to the foreground context in an async method. + + If true, forces the context switch to happen asynchronously. + + This method is equivalent to , but is more efficient when used directly with the keyword. + + + + + Switch to the background context in an async method. + + If true, forces the context switch to happen asynchronously. + + This method is equivalent to , butbut is more efficient when used directly with the keyword. + + + + + Switch to the provided context in an async method. + + The context to switch to. If null, will be used. + If true, forces the context switch to happen asynchronously. + + This method is equivalent to , but is more efficient when used directly with the keyword. + + + + + Returns a new . is invoked with a that controls the state of the new . + You may provide a to control the context on which the is invoked. + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that . + + The resolver delegate that will control the completion of the returned via the passed in . + Indicates on which context the will be invoked. + If true, forces the to be invoked asynchronously. If is , this value will be ignored. + + + + Returns a new . is invoked with a that controls the state of the new on the provided . + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that . + + The resolver delegate that will control the completion of the returned via the passed in . + The context on which the will be invoked. If null, will be used. + If true, forces the to be invoked asynchronously. + + + + Returns a new . is invoked with and a that controls the state of the . + You may provide a to control the context on which the is invoked. + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that . + + The value that will be passed to . + The resolver delegate that will control the completion of the returned via the passed in . + Indicates on which context the will be invoked. + If true, forces the to be invoked asynchronously. If is , this value will be ignored. + + + + Returns a new . is invoked with and a that controls the state of the on the provided . + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that . + + The value that will be passed to . + The resolver delegate that will control the completion of the returned via the passed in . + The context on which the will be invoked. If null, will be used. + If true, forces the to be invoked asynchronously. + + + + Run the on the provided context. Returns a new that will be resolved when the returns successfully. + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the with on the provided context. Returns a new that will be resolved when the returns successfully. + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the on the provided . Returns a new that will be resolved when the returns successfully. + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the with on the provided . Returns a new that will be resolved when the returns successfully. + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the on the provided context. Returns a new that will be resolved with the value returned by the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the with on the provided context. Returns a new that will be resolved with the value returned by the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the on the provided . Returns a new that will be resolved with the value returned by the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the with on the provided . Returns a new that will be resolved with the value returned by the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the on the provided context. Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the with on the provided context. Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the on the provided . Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the with on the provided . Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the on the provided context. Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the with on the provided context. Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + Indicates on which context the will be invoked. + If true, forces the invoke to happen asynchronously. If is , this value will be ignored. + + + + Run the on the provided . Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Run the with on the provided . Returns a new that will adopt the state of the returned from the . + If the throws an , the new will be canceled if it is an , or rejected with that . + + The value that will be passed to . + The delegate that will be invoked. + The context on which the will be invoked. If null, will be used. + If true, forces the invoke to happen asynchronously. + + + + Returns a that is already resolved. + + + + + Returns a that is already resolved with . + + + + + Returns a that is already rejected with . + + + + + Returns a that is already canceled. + + + + + Returns a that is already canceled. + + + + + Returns a new instance that is linked to and controls the state of a new . + + + + + Returns a new instance that is linked to and controls the state of a new . + If the is canceled while the is pending, it and the will be canceled. + + + + + Returns a object that is linked to and controls the state of a new . + + + + + Returns a object that is linked to and controls the state of a new . + If the is canceled while the is pending, it and the will be canceled. + + + + + Get a that can be thrown inside an onRejected callback to rethrow the caught rejection, preserving the stack trace. + This should be used as "throw Promise.Rethrow;" + This is similar to "throw;" in a synchronous catch clause. + + + + + Get a that can be thrown to cancel the promise from an onResolved or onRejected callback, or in an async Promise function. + This should be used as "throw Promise.CancelException();" + + + + + Get a that can be thrown to reject the promise from an onResolved or onRejected callback, or in an async Promise function. + This should be used as "throw Promise.RejectException(value);" + + + + + Returns a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when all promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when all have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when all have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when all have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve with the value of when both promises have resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve with the values of the promises when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the promises has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the promises has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a of that will resolve when the first of the promises has resolved with the index and result of that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Used to get the state and/or reason of a settled . + + + + + FOR INTERNAL USE ONLY! + + + + + FOR INTERNAL USE ONLY! + + + + + FOR INTERNAL USE ONLY! + + + + + If the is rejected or canceled, rethrow the reason. + + + + + If the is rejected, rethrow the rejection. + + + + + If the is canceled, rethrow the cancelation. + + + + + Get the state of the . + + + + + Gets the reason of the rejected . + + + + + A represents the eventual result of an asynchronous operation. + The primary ways of interacting with a are via the `await` keyword in an async function, + or its then method, which registers callbacks to be invoked with its resolve value when the is resolved, + or the reason why the cannot be resolved. + + + + Gets an awaiter for this . + This method is intended for compiler use rather than use directly in code. + The awaiter. + + + Gets an awaiter for this that suppresses throws and returns a instead. + The awaiter. + Use as `var resultContainer = await promise.AwaitNoThrow();` + + + + Gets an awaiter for this that supports reporting progress to the async or function. + The progress reported will be lerped from to . Both values must be between 0 and 1 inclusive. + + The awaiter. + Use as `await promise.AwaitWithProgress(minProgress, maxProgress);` + + + + Gets an awaiter for this that supports reporting progress to the async or function. + The progress reported will be lerped from its current progress to . must be between 0 and 1 inclusive. + + The awaiter. + + If the previously awaited promise did not complete successfully, minProgress will be set to the previous instead of current. + Use as `await promise.AwaitWithProgress(maxProgress);` + + + + + Gets an awaiter for this that supports reporting progress to the async or function, + and suppresses throws and returns a instead. + The progress reported will be lerped from to . Both values must be between 0 and 1 inclusive. + + The awaiter. + Use as `var resultContainer = await promise.AwaitWithProgressNoThrow(minProgress, maxProgress);` + + + + Gets an awaiter for this that supports reporting progress to the async or function, + and suppresses throws and returns a instead. + The progress reported will be lerped from its current progress to . must be between 0 and 1 inclusive. + + The awaiter. + + If the previously awaited promise did not complete successfully, minProgress will be set to the previous instead of current. + Use as `var resultContainer = await promise.AwaitWithProgressNoThrow(maxProgress);` + + + + + An instance of this is used to report progress and resolve, reject, or cancel the attached . + + + + + The attached that this controls. + + + + + Get whether or not this instance and the attached are valid. + + + + + Get whether or not this instance is valid and the attached is still pending. + + + + + Internal use. + + + + + Returns a new instance that is linked to and controls the state of a new . + + + + + Returns a new instance that is linked to and controls the state of a new . + If the is canceled while the is pending, it and the will be canceled. + + + + + Resolve the linked with . + + + + + + Try to resolve the linked with . + Returns true if successful, false otherwise. + + + + + Reject the linked with . + + + + + + Try to reject the linked with . + Returns true if successful, false otherwise. + + + + + Cancel the linked . + + + + + + Try to cancel the linked . + Returns true if successful, false otherwise. + + + + + Report progress between 0 and 1. + + + + + + + Try to report progress between 0 and 1. + Returns true if successful, false otherwise. + + + + + + Cast to . + + + + + Cast to . + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + The delegate type used for . + + The container from which the promise's state and result or reason can be extracted. + + + + The delegate type used for . + + The value that was passed to . + The container from which the promise's state and result or reason can be extracted. + + + + The delegate type used for . + + The container from which the promise's state and result or reason can be extracted. + + + + The delegate type used for . + + The value that was passed to . + The container from which the promise's state and result or reason can be extracted. + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + + Internal use. + + + + Executes a for each operation on an in which iterations may run in parallel on . + An enumerable data source. + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel. + An enumerable data source. + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel on . + The type of the captured value. + An enumerable data source. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel. + The type of the captured value. + An enumerable data source. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel on . + The type of the enumerator. + An enumerable data source. + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel. + The type of the enumerator. + An enumerable data source. + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel on . + The type of the enumerator. + The type of the captured value. + An enumerable data source. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + Executes a for each operation on an in which iterations may run in parallel. + The type of the enumerator. + The type of the captured value. + An enumerable data source. + The captured value that will be passed to the . + An asynchronous delegate that is invoked once per element in the data source. + The synchronization context on which the iterations will be ran. If null, will be used. + A cancelation token that may be used to cancel the for each operation. + The maximum number of concurrent iterations. If -1, this value will be set to . + The exception that is thrown when the argument or argument is null. + A promise that represents the entire for each operation. + + + + Gets whether this instance is valid to be awaited. + + + + + Cast to . + + + + + Cast to . + + + + + Mark this as awaited and get a new of that inherits the state of this and can be awaited multiple times until is called on it. + must be called when you are finished with it. + NOTE: You should not return a preserved from a public API. Use to get a that is publicly safe. + + + + + Mark this as awaited and prevent any further awaits or callbacks on this. + NOTE: It is imperative to terminate your promise chains with Forget so that any uncaught rejections will be reported and objects repooled (if pooling is enabled). + + + + + Mark this as awaited and wait for the operation to complete. Returns the result of the operation. + If the operation was rejected or canceled, the appropriate exception will be thrown. + + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + Mark this as awaited and wait for the operation to complete, without throwing. Returns a that wraps the completion state and result or reason of the operation. + + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + Mark this as awaited and wait for the operation to complete with a specified timeout. + If the operation completed successfully before the timeout expired, this will return and will be assigned from the result of the operation. Otherwise, this will return . + If the operation was rejected or canceled, the appropriate exception will be thrown. + + + If a representing -1 millisecond is specified for the timeout parameter, this method blocks indefinitely until the operation is complete. + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + + Mark this as awaited and wait for the operation to complete with a specified timeout. + If the operation completed successfully before the timeout expired, this will return and will be assigned from the result of the operation. Otherwise, this will return . + If the operation was rejected or canceled, the appropriate exception will be thrown. + + + If a representing -1 millisecond is specified for the timeout parameter, this method blocks indefinitely until the operation is complete. + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + + Mark this as awaited and wait for the operation to complete with a specified timeout, without throwing. + If the operation completed successfully before the timeout expired, this will return and will be assigned from the result of the operation. Otherwise, this will return . + If the operation was rejected or canceled, the appropriate exception will be thrown. + + + If a representing -1 millisecond is specified for the timeout parameter, this method blocks indefinitely until the operation is complete. + Warning: this may cause a deadlock if you are not careful. Make sure you know what you are doing! + + + + + Mark this as awaited and get a new of that inherits the state of this and can be awaited once. + Preserved promises are unsafe to return from public APIs. Use to get a that is publicly safe. + is safe to call even if you are unsure if this is preserved. + + + + + Mark this as awaited and schedule the next continuation to execute on the context of the provided . + Returns a new that inherits the state of this, or will be canceled if/when the is canceled before this is complete. + + Indicates on which context the next continuation will be executed. + If true, forces the next continuation to be invoked asynchronously. If is , this value will be ignored. + If canceled before this is complete, the returned will be canceled, and the cancelation will propagate on the context of the provided . + + + + Mark this as awaited and schedule the next continuation to execute on . + Returns a new that inherits the state of this, or will be canceled if/when the is canceled before this is complete. + + The context on which context the next continuation will be executed. If null, will be used. + If true, forces the next continuation to be invoked asynchronously. + If canceled before this is complete, the returned will be canceled, and the cancelation will propagate on the provided . + + + + Returns a new that inherits the state of this, or will be canceled if/when the is canceled before the continuation is invoked. + + + + + Add a progress listener. Returns a new of . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be reported with progress that is normalized between 0 and 1 on the context of the provided option. + Indicates on which context will be reported. + If true, forces progress invoke to happen asynchronously. If is , this value will be ignored. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a progress listener. Returns a new of . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be reported with progress that is normalized between 0 and 1 on the context of the provided option. + The context on which will be reported. If null, will be used. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a progress listener. Returns a new of . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be invoked with progress that is normalized between 0 and 1 on the context of the provided option. + Indicates on which context will be invoked. + If true, forces progress invoke to happen asynchronously. If is , this value will be ignored. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a progress listener. Returns a new of . + + If/when this is resolved, will be invoked with 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + Will be invoked with progress that is normalized between 0 and 1 on the context of the provided option. + The context on which will be invoked. If null, will be used. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Add a finally callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked. + If throws an exception, the new will be rejected with that exception, + otherwise it will be resolved, rejected, or canceled with the same value or reason as this. + + + + + Add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved with the same value. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved with the same value. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new of . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is canceled or rejected with any other reason or no reason, the new will be canceled or rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a progress listener. Returns a new of . + + If/when this is resolved, will be invoked with and 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + The value that will be passed to . + Will be invoked with progress that is normalized between 0 and 1 on the context of the provided option. + Indicates on which context will be invoked. + If true, forces progress invoke to happen asynchronously. If is , this value will be ignored. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Capture a value and add a progress listener. Returns a new of . + + If/when this is resolved, will be invoked with and 1.0, then the new will be resolved when it returns. + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + The value that will be passed to . + Will be invoked with progress that is normalized between 0 and 1 on the context of the provided option. + The context on which will be invoked. If null, will be used. + If true, forces progress invoke to happen asynchronously. + If canceled while this is pending, progress will stop being reported. This will not cancel the returned . + + + + Capture a value and add a finally callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with . + If throws an exception, the new will be rejected with that exception, + otherwise it will be resolved, rejected, or canceled with the same value or reason as this. + + + + + Capture a value and add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved with the same value. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved with the same value. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new of . + If/when this is resolved, the new will be resolved with the resolve value. + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with and the resolve value, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a continuation callback. Returns a new . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a continuation callback. Returns a new of . + When this is resolved, rejected, or canceled, will be invoked with and the , and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If if throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a cancel callback. Returns a new . + If/when this is canceled, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that , unless it is a Special Exception (see README). + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, the new will be rejected with the same reason. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a reject callback. Returns a new . + If/when this is resolved, the new will be resolved. + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved when it returns. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason, will be invoked with , and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture a value and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked, and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + + Capture 2 values and add a resolve and a reject callback. Returns a new of . + If/when this is resolved, will be invoked with , and the new will adopt the state of the returned . + If it throws an , the new will be rejected with that . + If/when this is rejected with any reason that is assignable to , will be invoked with and that reason, and the new will be resolved with the returned value. + If it throws an , the new will be rejected with that . + If this is rejected with any other reason, the new will be rejected with the same reason. + If/when this is canceled, the new will be canceled. + + If the is canceled while this is pending, the new will be canceled, and and will not be invoked. + + + + Returns a value indicating whether this value is equal to a specified . + + + Returns a value indicating whether this value is equal to a specified . + + + Returns the hash code for this instance. + + + Returns a value indicating whether two values are equal. + + + Returns a value indicating whether two values are not equal. + + + + Gets the string representation of this instance. + + The string representation of this instance. + + + + Returns a that will resolve when the first of the promises has resolved with the same value as that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved with the same value as that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved with the same value as that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved with the same value as that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved with the same value as that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the has resolved with the same value as that promise. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve when the first of the promises has resolved with the same value as that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the promises has resolved with the same value as that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the promises has resolved with the same value as that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved with the same value as that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved with the same value as that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve when the first of the has resolved with the same value as that promise. + If all promises are rejected or canceled, the returned will be canceled or rejected with the same reason as the last that is rejected or canceled. + + + + + Returns a that will resolve with a list of the promises' values in the same order when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + The first promise to combine. + The second promise to combine. + Optional list that will be used to contain the resolved values. If it is not provided, a new one will be created. + + + + Returns a that will resolve with a list of the promises' values in the same order when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + The first promise to combine. + The second promise to combine. + The third promise to combine. + Optional list that will be used to contain the resolved values. If it is not provided, a new one will be created. + + + + Returns a that will resolve with a list of the promises' values in the same order when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + The first promise to combine. + The second promise to combine. + The third promise to combine. + The fourth promise to combine. + Optional list that will be used to contain the resolved values. If it is not provided, a new one will be created. + + + + Returns a that will resolve with a list of values in the same order as when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + + + + Returns a that will resolve with a list of values in the same order as when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + The promises to combine. + Optional list that will be used to contain the resolved values. If it is not provided, a new one will be created. + + + + Returns a that will resolve with a list of values in the same order as s when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + The promises to combine. + Optional list that will be used to contain the resolved values. If it is not provided, a new one will be created. + + + + Returns a that will resolve a list of values in the same order as when they have all resolved. + If any promise is rejected or canceled, the returned will immediately be canceled or rejected with the same reason. + + The enumerator of promises to combine. + Optional list that will be used to contain the resolved values. If it is not provided, a new one will be created. + + + + Returns a new . is invoked with a that controls the state of the new . + You may provide a to control the context on which the is invoked. + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that + + The resolver delegate that will control the completion of the returned via the passed in . + Indicates on which context the will be invoked. + If true, forces the to be invoked asynchronously. If is , this value will be ignored. + + + + Returns a new . is invoked with and a that controls the state of the new . + You may provide a to control the context on which the is invoked. + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that + + The value that will be passed to . + The resolver delegate that will control the completion of the returned via the passed in . + Indicates on which context the will be invoked. + If true, forces the to be invoked asynchronously. If is , this value will be ignored. + + + + Returns a new . is invoked with a that controls the state of the new on the provided . + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that + + The resolver delegate that will control the completion of the returned via the passed in . + The context on which the will be invoked. If null, will be used. + If true, forces the to be invoked asynchronously. + + + + Returns a new . is invoked with and a that controls the state of the new on the provided . + If throws an and the is still pending, the new will be canceled if it is an , + or rejected with that + + The value that will be passed to . + The resolver delegate that will control the completion of the returned via the passed in . + The context on which the will be invoked. If null, will be used. + If true, forces the to be invoked asynchronously. + + + + Returns a that is already resolved with . + + + + + Returns a that is already rejected with . + + + + + Returns a that is already canceled. + + + + + Returns a object that is linked to and controls the state of a new . + + + + + Returns a object that is linked to and controls the state of a new . + If the is canceled while the is pending, it and the will be canceled. + + + + + Used to get the state and result or reason of a settled . + + + + + FOR INTERNAL USE ONLY! + + + + + FOR INTERNAL USE ONLY! + + + + + If the is rejected or canceled, rethrow the reason. + + + + + If the is rejected, rethrow the rejection. + + + + + If the is canceled, rethrow the cancelation. + + + + + Get the state of the . + + + + + Gets the result of the resolved . + + + + + Gets the reason of the rejected . + + + + + Cast to . + + + + + Generic Array enumerator. Use this instead of the default for passing it around as an . + + + + + Provides an awaiter for awaiting a . + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a . + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + The result of the completed + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a , without throwing. + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + A that wraps the completion state and reason of the . + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a , without throwing. + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + A that wraps the completion state and result or reason of the . + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a and reporting its progress to the associated async or . + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a and reporting its progress to the associated async or . + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + The result of the completed + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a and reporting its progress to the associated async or , without throwing. + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + A that wraps the completion state and reason of the . + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides an awaiter for awaiting a and reporting its progress to the associated async or , without throwing. + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Ends the await on the completed . + A that wraps the completion state and result or reason of the . + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten, or it has not yet completed. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Provides a builder for asynchronous methods that return . + This type is intended for compiler use only. + + + + + Schedules the specified state machine to be pushed forward when the specified awaiter completes. + + Specifies the type of the awaiter. + Specifies the type of the state machine. + The awaiter. + The state machine. + + + + Schedules the specified state machine to be pushed forward when the specified awaiter completes. + + Specifies the type of the awaiter. + Specifies the type of the state machine. + The awaiter. + The state machine. + + + Initiates the builder's execution with the associated state machine. + Specifies the type of the state machine. + The state machine instance, passed by reference. + + + Does nothing. + The heap-allocated state machine object. + + + Gets the for this builder. + The representing the builder's asynchronous operation. + + + Initializes a new . + The initialized . + + + + Completes the in the Rejected state with the specified exception. + + The to use to reject the promise. + + + + Completes the in the Resolved state. + + + + + Provides a builder for asynchronous methods that return . + This type is intended for compiler use only. + + + + + Schedules the specified state machine to be pushed forward when the specified awaiter completes. + + Specifies the type of the awaiter. + Specifies the type of the state machine. + The awaiter. + The state machine. + + + + Schedules the specified state machine to be pushed forward when the specified awaiter completes. + + Specifies the type of the awaiter. + Specifies the type of the state machine. + The awaiter. + The state machine. + + + Initiates the builder's execution with the associated state machine. + Specifies the type of the state machine. + The state machine instance, passed by reference. + + + Does nothing. + The heap-allocated state machine object. + + + Gets the for this builder. + The representing the builder's asynchronous operation. + + + Initializes a new . + The initialized . + + + + Completes the in the Rejected state with the specified exception. + + The to use to reject the promise. + + + + Completes the in the Resolved state with the specified result. + + The result to use to complete the task. + + + + Provides an awaiter for switching to a context. + + This type is intended for compiler use rather than use directly in code. + + + + Internal use. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the being awaited is completed. + This property is intended for compiler use rather than use directly in code. + + + Ends the await on the context. + This property is intended for compiler use rather than use directly in code. + + + Schedules the continuation onto the context. + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + + + Schedules the continuation onto the context. + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + + + + How the next continuation should be scheduled. + + + + + Schedule the next continuation to execute synchronously. + + + + + Schedule the next continuation to execute on the . + + + + + Schedule the next continuation to execute on the . + + + + + Exception that is thrown if a promise is rejected and that rejection is never handled. + + + + + Exception that is used to propagate cancelation of an operation. + + + + + Special Exception that is used to rethrow a rejection from a Promise onRejected callback. + + + + + Special Exception that is used to reject a Promise from an onResolved or onRejected callback. + + + + + Used to get the value of a rejection or cancelation. + An instance of is only valid during the invocation of the delegate it is passed into. + + + + + FOR INTERNAL USE ONLY! + + + + + Get the type of the value. + + + + + Get the value. + + + + + Try to get the value casted to . + Returns true if successful, false otherwise. + + + + + An async-compatible auto-reset event. + + + + + Creates an async-compatible auto-reset event. + + Whether the auto-reset event is initially set or unset. + + + + Creates an async-compatible auto-reset event that is initially unset. + + + + + Whether this event is currently set. + + + + + Asynchronously wait for this event to be set. + + + + + Asynchronously wait for this event to be set, or for the to be canceled. + + The used to cancel the wait. + + The result of the returned will be if this is set before the was canceled, otherwise it will be . + If this is already set, the result will be , even if the is already canceled. + + + + + Synchronously wait for this event to be set. + + + + + Synchronously wait for this event to be set, or for the to be canceled. + + The used to cancel the wait. + + The returned value will be if this is set before the was canceled, otherwise it will be . + If this is already set, the result will be , even if the is already canceled. + + + + + Sets this event, completing a waiter. + + + If there are any pending waiters, this event will be reset, and a single waiter will be completed atomically. + If this event is already set, this does nothing. + + + + + Resets this event. + + + If this event is already reset, this does nothing. + + + + + Asynchronous infrastructure support. This method permits instances of to be awaited. + + + + + An async-compatible countdown event. + + + + + Creates an async-compatible countdown event. + + The number of signals initially required to set the . + + + + Gets the number of remaining signals required to set the event. + + + + + Gets the numbers of signals initially required to set the event. + + + + + Increments by one. + + The current instance is already set, or the is equal to or greater than . + + + + Increments by a specified value. + + The value by which to increase . + is less than or equal to 0. + + The current instance is already set, or + is equal to or greater than . + + + + + Attempts to increment by one. + + if the increment succeeded; otherwise, . If is already 0, this will return . + is equal to or greater than . + + + + Attempts to increment by a specified value. + + The value by which to increase . + if the increment succeeded; otherwise, . If is already 0, this will return . + is less than or equal to 0. + + is equal to or greater than . + + + + Resets the to the value of . + + + + + Resets the and to a specified value. + + + + + Registers a signal with the , decrementing the value of . + + if the signal caused the count to reach zero and the event was set; otherwise, . + The current instance is already set. + + + + Registers multiple signals with the , decrementing the value of by the specified amount. + + The number of signals to register. + if the signals caused the count to reach zero and the event was set; otherwise, . + is less than 1. + The current instance is already set, or is greater than . + + + + Asynchronously wait for this event to be set. + + + + + Asynchronously wait for this event to be set, or for the to be canceled. + + The used to cancel the wait. + + The result of the returned will be if this is set before the was canceled, otherwise it will be . + If this is already set, the result will be , even if the is already canceled. + + + + + Synchronously wait for this event to be set. + + + + + Synchronously wait for this event to be set, or for the to be canceled. + + The used to cancel the wait. + + The returned value will be if this is set before the was canceled, otherwise it will be . + If this is already set, the result will be , even if the is already canceled. + + + + + Asynchronous infrastructure support. This method permits instances of to be awaited. + + + + + An async-compatible manual-reset event. + + + + + Creates an async-compatible manual-reset event. + + Whether the manual-reset event is initially set or unset. + + + + Creates an async-compatible manual-reset event that is initially unset. + + + + + Whether this event is currently set. + + + + + Asynchronously wait for this event to be set. + + + + + Asynchronously wait for this event to be set, or for the to be canceled. + + The used to cancel the wait. + + The result of the returned will be if this is set before the was canceled, otherwise it will be . + If this is already set, the result will be , even if the is already canceled. + + + + + Synchronously wait for this event to be set. + + + + + Synchronously wait for this event to be set, or for the to be canceled. + + The used to cancel the wait. + + The returned value will be if this is set before the was canceled, otherwise it will be . + If this is already set, the result will be , even if the is already canceled. + + + + + Sets this event, completing every wait. + + + If this event is already set, this does nothing. + + + + + Resets this event. + + + If this event is already reset, this does nothing. + + + + + Asynchronous infrastructure support. This method permits instances of to be awaited. + + + + + An async-compatible manual-reset event. + + + + + Creates an async-compatible Semaphore, specifying + the initial number of requests that can be granted concurrently. + + The initial number of requests for the semaphore that can be granted + concurrently. + is less than 0. + + + + Creates an async-compatible Semaphore, specifying + the initial and maximum number of requests that can be granted concurrently. + + The initial number of requests for the semaphore that can be granted + concurrently. + The maximum number of requests for the semaphore that can be granted + concurrently. + + is less than 0. -or- + is greater than . -or- + is equal to or less than 0. + + + + Get the number of times remaining that this can be entered concurrently. + + + The initial value of the property is set by the call to the class constructor. + It is decremented by each call to the or methods, and incremented by each call to the method. + + + + + Asynchronously wait to enter this . + + + + + Asynchronously wait to enter this , or for the to be canceled. + + The used to cancel the wait. + + The result of the returned will be if this is entered before the was canceled, otherwise it will be . + If this is available to be entered, the result will be , even if the is already canceled. + + + + + Synchronously wait to enter this . + + + + + Synchronously wait to enter this , or for the to be canceled. + + The used to cancel the wait. + + The returned value will be if this is entered before the was canceled, otherwise it will be . + If this is available to be entered, the result will be , even if the is already canceled. + + + + + Exit this once. + + + + + Exit this a specified number of times. + + + + + A used to schedule callbacks to the thread that it was created on. + + + + + Create a new affiliated with the current thread. + + + + + Create a new affiliated with the . + + + + + Create copy. + + this + + + + Schedule the delegate to execute on this context with the given state asynchronously, without waiting for it to complete. + + + + + Schedule the delegate to execute on this context with the given state, and wait for it to complete. + + + + + Execute all callbacks that have been scheduled to run on this context. + + If this is called on a different thread than this was created on, or if this is called recursively. + If one or more callbacks throw an exception, they will be wrapped and rethrown as . + + + + Provides support for asynchronous lazy initialization. + + The type of object that is being lazily initialized. + + + + Initializes a new instance of the class that uses the specified initialization function. + + The delegate that is invoked to produce the lazily initialized value when it is needed. + + + + Whether the asynchronous factory method has started. This is initially false and becomes true when this instance is awaited or after is accessed. + + This reverts to false if the factory does not complete successfully. + + + + Starts the asynchronous factory method, if it has not already started, and returns the resulting . + + + + + Asynchronous infrastructure support. This method permits instances of to be awaited. + + + + + Indicates that the use of on a member is meant to be treated as a tuple with element names. + + + + + Initializes a new instance of the class. + + + Specifies, in a prefix traversal of a type's + construction, which occurrences are meant to + carry element names. + + + This constructor is meant to be used on types that are built on an underlying + occurrence of that is meant to carry element names. + For instance, if C is a generic type with two type parameters, then a + use of the constructed type C{, + might be intended to treat the first type argument as a tuple with element names + and the second as a tuple without element names. In which case, the appropriate attribute + specification should use transformNames value of { "name1", "name2", null }. + + + + + Initializes a new instance of the class. + + + When is created with this constructor, + it can be omitted instead. + + + + + Specifies, in a prefix traversal of a type's + construction, which occurrences are meant to + carry element names. + + + + + This interface is required for types that want to be indexed into by dynamic patterns. + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Helper so we can call some tuple methods recursively without knowing the underlying types. + + + + + The ValueTuple types (from arity 0 to 8) comprise the runtime implementation that underlies tuples in C# and struct tuples in F#. + Aside from created via language syntax, they are most easily created via the ValueTuple.Create factory methods. + The System.ValueTuple types differ from the System.Tuple types in that: + - they are structs rather than classes, + - they are mutable rather than readonly, and + - their members (such as Item1, Item2, etc) are fields rather than properties. + + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if is a . + + + Returns a value indicating whether this instance is equal to a specified value. + An instance to compare to this instance. + true if has the same value as this instance; otherwise, false. + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + Returns the hash code for this instance. + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (). + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + Creates a new struct 0-tuple. + A 0-tuple. + + + Creates a new struct 1-tuple, or singleton. + The type of the first component of the tuple. + The value of the first component of the tuple. + A 1-tuple (singleton) whose value is (item1). + + + Creates a new struct 2-tuple, or pair. + The type of the first component of the tuple. + The type of the second component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + A 2-tuple (pair) whose value is (item1, item2). + + + Creates a new struct 3-tuple, or triple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + A 3-tuple (triple) whose value is (item1, item2, item3). + + + Creates a new struct 4-tuple, or quadruple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + A 4-tuple (quadruple) whose value is (item1, item2, item3, item4). + + + Creates a new struct 5-tuple, or quintuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + A 5-tuple (quintuple) whose value is (item1, item2, item3, item4, item5). + + + Creates a new struct 6-tuple, or sextuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The type of the sixth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + The value of the sixth component of the tuple. + A 6-tuple (sextuple) whose value is (item1, item2, item3, item4, item5, item6). + + + Creates a new struct 7-tuple, or septuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The type of the sixth component of the tuple. + The type of the seventh component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + The value of the sixth component of the tuple. + The value of the seventh component of the tuple. + A 7-tuple (septuple) whose value is (item1, item2, item3, item4, item5, item6, item7). + + + Creates a new struct 8-tuple, or octuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The type of the sixth component of the tuple. + The type of the seventh component of the tuple. + The type of the eighth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + The value of the sixth component of the tuple. + The value of the seventh component of the tuple. + The value of the eighth component of the tuple. + An 8-tuple (octuple) whose value is (item1, item2, item3, item4, item5, item6, item7, item8). + + + Represents a 1-tuple, or singleton, as a value type. + The type of the tuple's only component. + + + + The current instance's first component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its field + is equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1), + where Item1 represents the value of . If the field is , + it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents a 2-tuple, or pair, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + + Returns a value that indicates whether the current instance is equal to a specified object based on a specified comparison method. + + The object to compare with this instance. + An object that defines the method to use to evaluate whether the two objects are equal. + if the current instance is equal to the specified object; otherwise, . + + + This member is an explicit interface member implementation. It can be used only when the + instance is cast to an interface. + + The implementation is called only if other is not , + and if it can be successfully cast (in C#) or converted (in Visual Basic) to a + whose components are of the same types as those of the current instance. The IStructuralEquatable.Equals(Object, IEqualityComparer) method + first passes the values of the objects to be compared to the + implementation. If this method call returns , the method is + called again and passed the values of the two instances. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2), + where Item1 and Item2 represent the values of the + and fields. If either field value is , + it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents a 3-tuple, or triple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3). + If any field value is , it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents a 4-tuple, or quadruple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4). + If any field value is , it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents a 5-tuple, or quintuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5). + If any field value is , it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents a 6-tuple, or sixtuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + The type of the tuple's sixth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + The current instance's sixth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + The value of the tuple's sixth component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5, Item6). + If any field value is , it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents a 7-tuple, or sentuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + The type of the tuple's sixth component. + The type of the tuple's seventh component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + The current instance's sixth component. + + + + + The current instance's seventh component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + The value of the tuple's sixth component. + The value of the tuple's seventh component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5, Item6, Item7). + If any field value is , it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + + Represents an 8-tuple, or octuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + The type of the tuple's sixth component. + The type of the tuple's seventh component. + The type of the tuple's eighth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + The current instance's sixth component. + + + + + The current instance's seventh component. + + + + + The current instance's eighth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + The value of the tuple's sixth component. + The value of the tuple's seventh component. + The value of the tuple's eight component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5, Item6, Item7, Rest). + If any field value is , it is represented as . + + + + + The number of positions in this data structure. + + + + + Get the element at position . + + + + diff --git a/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.xml.meta b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.xml.meta new file mode 100644 index 0000000..6789463 --- /dev/null +++ b/demo/Assets/Packages/ProtoPromise.2.5.0/lib/net35/Release/ProtoPromise.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a9cf411fd257e4b49a9fc1aeef9571bc +timeCreated: 1684393130 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0.meta new file mode 100644 index 0000000..e76a46c --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b9ace1905767aaf4d8d9a14ccdcddc53 +folderAsset: yes +timeCreated: 1684393107 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib.meta new file mode 100644 index 0000000..72ee3e7 --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 415800021210e4340bb5a64d333b457f +folderAsset: yes +timeCreated: 1684393107 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35.meta new file mode 100644 index 0000000..5b82d07 --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d8edec1f3f514874cbb8e1de466c1f39 +folderAsset: yes +timeCreated: 1684393107 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release.meta new file mode 100644 index 0000000..05bf8fe --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 74ae7fc5a174d2d459b6667abe84da08 +folderAsset: yes +timeCreated: 1684393108 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll new file mode 100644 index 0000000000000000000000000000000000000000..761ac1c0a38e435e049319b818d68ca46e2ec94c GIT binary patch literal 28672 zcmeHwd0^Ysk^g+3q_1T8lzioIf^wqRj&lbBCd7$zICo;_;;5q7-^3!aS z_q~~U^XAQ)H}fui+i|ZzsJdE;{YWB6=k6+oK*gmVSFw zOM4_4=uE`7B*Gnm)^IEqPX#tvfkam<5QzmES2PDY;%!!4VWD@dEqdjAqNRp|uG&8Q zg>-9g)966HF`1|x6jM{x<;Vkg4&osy5m;%xnZWwX=WV2*^T$DR_A)E~pUrKQN%(vP z94i<&Nc0pNV&La6Q2}UQx{Ro0VAgvl$7>q_4K#z~mDk z+E|xJCR%}sZU+HyM=!#Y^O=L;s!LeWI2c)1I*f;9#qi{O<`B)zK?OXH{_}@*Q{m+yh0N!I4DX6GnAi@H7Cukm;-*uN=-`BlA${WCx8y6QKK4 zSug;eiM}%BrxWEtP)*Giga?>G@YGa;w{)^WUgYSWj~P)(nbjjz@*s;ue#p-6vGaR5 zAFUk8Q4r4zUr7^2+k{7%FgG|JSvNeznM4d^2*nu!s*d3rENd(SGi@LUU2NSHoeSL@ zwr)j4!~GOQ7ri}@?)8)Efpw6V_n?EwcWZJGHEL`uh+c}GHJo!}wG6PW{E&^|_bFEp zSq?V`w+E_Y_igLSr);3Nh{svw-5?G!|K2|k7M*(!*>nd(GoH&k&}&$V$L zH?smGDDpQzzKh%M$LuvLH_S&Z@whzX4A+dQ4o-#ST`Uszai-X(;?qFN_Zz|K$jf#m zFsPlC!5Ki3GnpA`u^QD0u7xf-C;Adk4&Y(k;Z|@l6~vI5s{0I7tsb_=WW~Q0JQEna z=!6MJ_9o9l5Mll6?E3pH`rA0DXfwiG#kg0oRPF<*7NAu5QG^akfJ#ive~ z7z8ufz@)iIRB#^B9xwQ8?nb8Sit_3L^Hr z!6ubcX$T%Jr#k45ia+2A465AddKQz;C%t_95>Z)np)A z6ctj@aDv6)?5N+090=;O5#uYRMsO8pbP}2QN_Bg{*u$+UcMrpFRoX4+qWEf576~@q z47_6UPtkrAw@Or4NbVtUFGZuM>Kv`h*HmQ>cRbhv?tWeOD~<(IciSF=scLs2Gh@u{ zc_}@0mdPlHXXq|XGt08B(a$l~pru-rvV#QIBFR=@mk^h+N$@fD9iHH9F0oYgrLSuc)C-^YDAlcRB}B_;lWTz1h7|3 zY=dI-(@Hoj%pNv?3h)GzL=2fdn7tTBjB31?aWG3EM&7B)Z9UI}*y?Yp;Q7dvzZ6-#U3I>Ji{9gcc$X4!T*?5xK*m58}-igs0Vb%{}cXs>4(P9c!wS z2nmTRC+!CxW-(u}3SI=3S~Iwng>Z0~UbE~(X-^cm8SFsXGYqXb^u#&QEemvw;V3ao z6~|0$7Aw;c#F*9W!8GO^H?ea3o+SWImE4TSq{FT1tm~P@qBG!1r8=z1oJrwaUkn6 zZwSoVBIQusY$u-I&FT!6&l)cSJxAlufg{-kN#lCCMDIm7W-Eg*7O(Wd9qD!yO|bRB z+QahejB49RwQh%sU))c#aisM7p-Gf@m&%CYp@69 zmz>7X9zYY_NeD1&Y|PqHgKVmy!w)I`I9~5n; zs~Gw$64>c#WU!Nvt^w@Te72pg1?A*+LRfgk=d=RwIdAehruA}3)=p@;znxg*-?S43 z-TO&)>faX?#4zP3UVSBImzzLRyKhFShfJ0A+`^=ap3ftz-kxT0_At+Y(wVB8>pPPF z#Jm!>94A<)5Vy=P^NrW6^_ac40!5VX<_ae&;0D9vJ|60kYFhw^j(bJ$f8JC3DtUiy z>N4JRi&he&vTHzaqLmsR;^1xEIL{d@153AW54TlYP$6vwzW`*{p4*W^k;1ZGhRh(^ zsM&=I!%+_^4b-_dSShttH=Ch0-|o&GKvXvyNEVw)?^_!O^=P8A!uwX!CssUN6!}Cp zp2K<1$Dde?PM?kWVX?B+xf6=$aY8>Fgq{*sO{}MfP=MantKD}2vdw)rKpX^Y>>gkf zXQ_&D1wG8|ffsxcx!+Jh*s$iUb*h`|qUR!_oJUNRXSg$R?gi6Zm4)iG6Cy`T$qRm& z$))|N!TUgj&2@j=6irek_h+WAGLe5Kl_4T*Vk>yBpBe1o;83 z3EdsRe+HD}Cq@t!sqq`Tzryrw%=T&c^j85WtcMRG?|Fz3z4|d%HSejvg!ZxdfFE;d z_rpl|5Oopq+F_a)d<2Nnf_ciXEO={&+Rc*tX@{eX@R-3zQ8d1y;H_1I>nC;nGsX`t zvPD-F4l2qE!a_A@mORzzeR(`i!{@@LP@m#gQWe|Rlt_OJO{m?EBh5tm6HKb;c@mjK zy0AEVm03w(LPq9o$GU~ zS7ydomq@I0%Q<66L5zfs^`}wNKi0V|j&;uMSpOG*I@TG=jdex0pv@uub>>*-+Nzrk z!Lcsg(Xq~|=vdExYm?ohT;D^q=X11wLe#O8qQxf*qca^Jd{h}OGQs~&m z8r;Q6F8RdBYnWuuq-UUG7zh@IU8*Rcx<#FC)@{A&X7On7Buz zYgCK80f@axQ`O!I4la)Ii5ROY_RH~T(ktF+cC%+rD>Nl$9C1uGW_23D^dVQmJVl$h z`*ieRw&Lpy1gW$7D29dsSd}vz;yBwLRo%?BJ$nAuwVI>}xE!6S*r&1HV*#nb!2&yk zA3)Qd7VxVvP)Ow-JT&|(f+g2t8e}rOg2AxAQ@CjKFdp5A_sj8dv_>XO#vBHCSqee{q2FS|U^Cp)r zR^6PdZYIXxViJU6DIe|#BKWk>3s~rE)y=sGwY!MHM%z_sxj$h+&Yrhf2nL9A)y+ha zYuACNKs5TSMTc1QW*C%#_%Se}rocaCG0-I_jf_lJ*vJ*IZ@|gIcEIKK;h>v~Y(L|J zz*Fp6gfCp07tb~H7D&FE**>*ya@~x{XG~?|<2F5t^iS}fF?)#GFlw*DP-B`?iAZcq zk~z*ihv>KP{xNHsiBIAspp99$rm2z3821978;x&bW_%Qu>~*)_nV$!p>CeVA-V_-C zH{#**5a&A-`|5jx6eO~IKDw&A-D`7WUh`8YfrUtH$Ga~hr@cvw8#6rX?1=Q7xf z0(m8+Cfy+Eze#$t=Wc%~O)iBo=sS657n-zP(rJ>el=M+apYw2OH~5R_*PamMyi-6)7^heJKXw&S#jwY`6?Bj`s3Q7R5%Zrh>>jU4htxgZBAQanlokFz zA)V!6t=e3r1t!If4fuNLHrK~4lRSBM`~CDe_s1?TjV#=+u64 zyZOdqg*#Mw6HUM<6w$i{q0%Dy6jGCp5c9ueaQaiE`)NDuuwVA;`>7E_brXFZl$*$j z*{Fzaq)_QMgz^ocnDmCHw4j2XbzhlZLHB#E%r|LRL1}@P;*jj6=ONQij}&l!Unwd< zyU!rqPeb$Bo>v!hyKa-|e<=P1>{jXgh2O+*mKGeM*U`G4t|;W5?sAnt|5v0h_Z7c@ zUVi`!_+jCXUHfSjr0u7lg1?Buu-i>^JABGdrTNVBGI(yHfJpm(Ia79*a(XAm#iTC( zJ=i24fQBYL=w=&k8^(5cUu2Fzi(8C?fQx9a*#EGMP99n*qHY7aPyHzEJ5b!TNx`3;tQ~ZztUWo=Y(1?Cn0m!Zzk7=KNBr<}4NL`!-f7*uUCX z74;#OwiSj-efZvBq+l;%e8$4d@jwdSyf?wloPFJ)sf)(5apnga|PItlVlqa}j90vSd4j%77{8ujuKV6$-Y*g$uJK25@iF)zwy z1KW$T3n(90FUt2K4mS%{CS{ZHm2sAH8fFp)ILE?*v+&<`!MuWd(>l&zPtM!J$5qe^Iv)LTN=kUcvq%{X38D7wlQ#ynwzU*n3iTAw4A6FsT=!M+G}i zTHlDb7D~xq;y0Z1`;t|rliqZ%Lwd6>g!FKEk>R7cF3TK4mky1X22CvMKsrRyYln6L z{-rnKET#Qwr|BT&??L*kuMg?_lKxQAuekhpPvNj@FZf4z_aUv3v`|u`(r*}ayuxoZ z_x{*qI8}Bvc&0l3;56tj1vdfym4oRcJP}Z)IuE#f^zZq%nm$@l@}9$>>CoSxN1S(q z^6&Y-bo8e$aUKTc=Hi<%mAtE1!l9xf@K+SJ0ge}hkp2#I2j!LILC-6EMM&RtvrNsY zHF>J!uaNM`atwN1>ONg@0I_|2sRjM7G44e=n0}w}z)9$(uz9ayTP;B#)JR$=>F;4B z#CXPHGwB@lpjm-Pe-!EI^qk3*9{^rWKN9#Q2g6S1DEeL5akTYJ#c`A2_XOrNSh80r zKSvtO|25LjxPOmyfw#zD_)o5rQH~UR44y`RpSdysH-m?N+DmSO)-h&WN4wP|^uV&Q zlyahM8)KNuANJ+B745dMYhC4T7kxE@jc}WE)W#NJd_ zWn+)#*SquRy$rU)i*w}5Z&$vrysEvKj z&6xfibv^AEE_(>Z8T%~Cs%_3azU$mRnwpkUaJ$=2XWQ5u_dmPKXlVv}(p^C}W$GPq zSJLg7dN1MI*e}`GzOuL6!|3@8_P%>0y=!AEa}@pB#ts&Kio6;v|zMH|~Ct-oz!JA|`f ztgcs6SP7X+ZR`usY&^YYW0#=bcznOBIomM7kEb#l`@EO2t8FY+%Gf)p3|sZup6Q0V$U@CNU)>CJ~*95*KiAcv`es!f*s2{Qn}hQo!V_| z_mJ~}@%aZk2x(yk?bG$7g&B0MVBErHV+M_?Wlr6~Oj<0MZeb=D;B(Zq$2Sgp7X3L| z_ynRqgSj|XX3{>cXRwFN1a@BrJBIV&3mT)_3M|hodQGtR@>t4QR5+3Ay=Uz4ZS$N( zLm0z2EOhL3o<&RSvIbyhQ;Uspd-ZgcV8@Ji+{1y*sbeX}j4|-RdTL<|<1k|=V&v7+!{ZSYznl zE>9ypE12%zeEL{p=-=g@`Q)6!GIjsv(-}6#{aZkDY>fN2kS-QX>#~q0PtEGGkmfN) ztcwers|7n|gy0j4sKv(ElNZrL8p~@$bS$DL?K1YyMf8kacDaA=ctS4f-II2&NqZp&moJ6Uk~HC=V9MIwS>xMaJ}~ouD6tKV$A5H zGS5D>lwOpwV}=1K%ji|XbmT0fw*})qaM{lUyA=5U@*f6C#!fX+UXThKBuq$bA1lfUEn6s?xBW5!jO z8A24w;S5nnhVxn4NIf~6o9Nmc&Q0`%4Ci+|t@Onl&Ng~1hqH~I%WytR7JWa5a|``4 zhjR;kl;M2M(@ttu)=Cko5={5#BC2Lg*0G;>w$d~yvMp2q$ zV?0JtYOygMqYiG2&MoEi;lh#$u9U#iEbqy%rC%DDW|^~scd z?ks=W2eOpEU7GfaEdP9ec3dh8^Ki>ojCd)*U7e3_c<5JnKEQX|lks533A_w=IsFCK zhLiDqC_mMBeud`)+;Et9I`CNdF3ZHzfycsK2kxx^4+C6?AV>H3oS2o+=bb)c1?02q`9p5O$dahD;yDz~# z=9h~18ne_^oH2aHNY{QNjM8h3D!K27s0&JNG`6YldT%$bhs^toh>DjyXzT<}3GGzh zEB`tuw+=mu^r4~OLi*{FmyKI(&f80l8xO)VN0Ck+_AR4N{RTWu>TBp@liE4#*Txm< zjj|6x`Lg;o(#uOf#_s$!d}FswecgAvafkXG(z|H3cP8DT4wT<++(Is#Vz#Nq;<4&3 zn&}-!chNU1YSg`|-9Je^2AW)1aPqouh7nCWu){4@kOA(kJlV>;h#N7ve_Y z3H6iWkh&jq7d;|(4UY(XKRu;pg2KCp`=u4!DivI#MqvbTbD%zO{F8cF&2@cI`HWlr z_p1iu1*}>VjGwE=!P7JJU(^I+yyK{P9i#T5dI~b{Ga8I9`hKsb7}MS3jahQ4oMN=2 zN6b^{cvg5O7m0|_GS_`bpD%yd5m7JV9^yrsmOqo;AifED2lpc{ zA?0036>1rv^DWXFa&z>)NPa`;?~D95&QQHvd7gYlVy z;Z$bu-BX#t_fU<*r;tYCb3>WI_fv+dcRcNEl+(JQ_7}h6G}PB%0Yh?D_Z>(w!zOkw`_>QmE;QeQ!x#@OZRGk#aL$JJ>3zT^O4zPW(?F}WebxmA-)FUfl5a+Z5*5nJ#^Ytv z&6kb)&Ec5c3u&q8$85^!8l)cVz7_)R5=x(>S4euH!8{R3yCm(A^a@E2NP3&3_aY6@ zR@$3ahn;i*(o*sv9ZtiLj-gpdYiKUgX|xgP+0=n_9_>Q9MCi>(=fMLDkhUUi6}VO4 zgY*hrop+Fa4EaYy{t+oXBBjTLa$G3Kh2k(+hcO0A8)LAvc>>Q9xK-d*8%|Q5_mEHy z3FU~uM+81D@Nt11ilsReOB*Bb7=bq`ZmU<)gOVPS(nC^uSSW8xN)G09IJzZeX#t^( z5y}_`Q|1U|o>1lqWus7fCB0NAmpWL7gF-nZoX<#lMAGAuI-H`dQ?wO$jKB>}Zhf9m z<_V=$;8uYz75Gwt4+(ro;Af=P5uqFr%5i~@3+!-7TP|r!;4uP|huaEBx-pO8UPDu7B)Ah6~ z4-)dRGcCq9OC|XB$A{faDSkv!hWG0$u_qaV-O^C(8iwJUn*cZ_fP?UD+AlpsKkono8R3Ha*Xbv>O z9E()Z66nom;(WlX5$}9rEChTW`l4_S^C87IiAZ;1Pp7CG{ZVuYdZTa?H5}<)eBZ0+ zGiXQAt=MfTdJ<7wOxMf)>_&X!R6;l7Ce4SncnZ>c5Z7h&JoYtZ^iBM{upH~xETrE- zq*q}5iX#01=#}&{z?Jk1z(eTQkUWHb3&}(1ch~_Ap+7+W5c(r*Ih6j4(xLPpC>=^C zP&yPtdOA{N@ZQigMj`bWV~~1{aYzeLim^ax6;&C2l+QKBVvo59=@?p$bS$+Pqao=$ zq~mEL($i@((jY}qdK%T?HfbJqYi-amNxSGOdWybBKY|Xm#xf&h+-3aOC{^uhr+P&-HoNao2BM${cMvd-+s=qg>{* z1m`Q2!H8y?O9gf0aLqPS4!~XfOaz1RC4__#PHH+X4#rQ6?1UB-)>--oQKP>BqUH!1C zA2#*FqJG#D?}*@;fQLV2v{=-tq!ZGY;dVaSrjMsp95kqR0H-v5^FZel?7Z48ud(r3 zJD+IN>uh|IolmjzX?8xt&d-p12)>sM;mk?!O0CyyJ6~+;wOsNch=@>OEq#@0;i=6u z!k9_3jBa|yc!E}{m*`IQ3Z6IVO?8Z1j-OMl<5#rK@gZm~;~wnvRycRjZtQyQajr6+ z2mDKC2jE>a+4TgqxMtE9@jQs8$;PcfbnJU%>rJb0f14}af08P8tsX8r70q0p4cp~+OgE*wcMh$ot2$yB1N zH5G}+W^YQD3D-2{S`nKUj^ekt9Q_x~wkF*M_5AmaYZf)~z7T zi^o!tSeMlxs%C3#h*;6KoKB#Gd$z7U614`C*FZ?LKUs8I7fH24jV%c)ne1QOWa|vM z0_BuuOLB;i(h4E*1S&Mmk9Boei7@O1%8p)N%W|0UOXDLWPp-&3$2)y zh_tej5$Qy7MQm9(5^HIPkF-%T)R9HDSgFvwu0+C$rR?HH40odi*NpF65nCEZg@(2^ zYKp;o@auJW6LFmtn=V3gE93Df-h!GR3vY^|AQ_4zwbKFt+!Ehv#a3G>GzUVnm6{jt zfXPx;L#%DJ)rrag;JuC3W(z8`(Q<1?1`f5QsWRGYV#)Ak3qfIvXk+J1#p`SrPS$C6 zIfXmbH6=fxV$MkSW9H80R<>~o%`nIAYHM2;%mwXNTgiBIyL7#cS`s^3!dtBs2=nbc z4m2=a*2Y1!wMQlaVEeTc)!V}|duu2(7m)}%FW`uy`hgwip^1f~b#}C$s(g_Z?X(hg z1NEqHnLWF1IsVeY|8zs#t5dWDAHamz5l+F3GVP=i;Z{o=jmL$J&CZnuc__mPYyQQp z?cvxK3(mP6o<>cLkz{8)$-YRLnTVQ_YvWOj6o@hpNYqOCikKxcfFNi;8-5gO)iI&V zdCc3aXe!(i>97dO&X0yWlUAFc_H4e|3P*Esfm6)CCKgHUoFChQAfTp(JUl&M8HCsS)H=IuqP23JmFAtD&9FSp3oB$ zuy6vgnMS$0ktF5;i)^i$(1i%Rc$dW!Ld(w1v@IF33+IJ9!>#D)N-H4@nTaW3Q40!F zT>ut^V{K83N67a4x#6Uhj)K+JWGa5 z@7!dikx(b5nMfX~$jDz`(1UkBOm+n}D?k7N%z_tiIYGWKsunTSE$Oo^I+wwLycU=j&xwsy&{= z)@W_&+Oow;ERV<5B(20e{B@VC3|+_rlBEskXSSdrnY21KMR&GDQn~yqHeuf5Sv{i} zOw+oxg=2V8q^-@0WlPe^45ZJ$IAz6>m`<~->DCq?9M)QilNUC{Hp|3;n&Idvxv+)V z9NE%^{XoAKv~BHKJQ}`OpyXf;;B9T#s0}V)0pZxrY=J!_LQh3DMWP6ZZ0Y=qtyUhm z&}OXG@g11aW!sgRZEP%t$ykGpytZ^%h-saNT6G+?$xKEzrV(}~_=H}A(m{!cWfEuE z7`B5)8-k#F&QzWUFO$@es%vOTl;|3=RY`e*Pu7f&R*A|UZxUDS&@tCv{ydk3O-Uy2p?{f4Uq<1{h1Kxz%iV!ap&G4du zwodowl+%YyYm+Tsl+#x*@)SRL#gE)AMWsb%2& z$=2kf%^>=`E_hhSAaYB55NYRt^NpBg;ORz)>9s#+4=HpW+JUrz=OAJ1Z|Q+m`kxi0 zg6vCj&r8@@u;`)ilx3T_epTuLa+5^^b#>Q0_moAFAuBzB@OmnnyEK6}4Lm9F8bd4NotPvtCw91(K5Q<;uBnqG`1|>sl}Mv{ zJ)YYYiMD|l+GGRC&}KeE0_P2g@Yy&`$(5yYh~ajEtGEy!k9gw zenLVxOTbEl&Smk$0DNEsVmw$*LTCNwL(=|>VqRBP;D8|hoWb?ZK23w3X;6DP_~!HW zjFn_{=f$!81}gI-&s?@3gdVZmB@zHaST7{-GJ{W{>^(vbG3NpyhuS4K3Ryza$=r#W zv4r-!Kgm|W=GAt(-1`lx<69x5lJO`j-~TX=a+QgUmgQ_p!a-WV1elNd@4Xq2xScoG1o2nM|0iDLP2KMx|2ppoorguPLzB1 zm2>fDGx5F`yT6?M4sS_m{>4bRcY0PLzMZhag*>bARKq?4{LzvtYS)V}tY6+kdlct@Qtp za8aDS<9|%?jBq<#PPIs!>}qUTe7hxz@wNa{kHDcA+c?C>7v6mcf^AnCW07!q4h{5jktx9OSx(Hjx!|L8Qw(k|0H**&@n3*CL66~U+z8Sw_*yrB9~8#% zf=d9kx`Z=8J1C6u6lj}KmO!4u4<}h(=K%RBl(T#b94W|Wo=r$~J;qugi(A(11@H<# z^R7mkM0-)db@+|Ph=GdlLad!0uN~#vK?_LdljurZ6mRQi1Xh=2ZviJu4dcm`{P*a!32hGUcz@H?;d`SvOrP#$ z(@Fan#J9yT&k}7NHg+BLw^S08HK@zOwR2GET=YWsn{CzwdrEI>Def)cFAUx_g7+YGwfH5;McHA%x2W*&{+VC z&A3JQyHL_*bEIXl8TxCI9dYfQn=vY^Sy~tN=pB%+gO$w}ho>@)+uCaP55~f$=%LjO zXV3lF+%H+Xrmg?kcLU@Ikl_p%hR21(SI%IOfajn@xyt?9j4EdU--H9La+mviA2j@P zm;vuPl>39o@`YILZv^ZLD5FT3EUNeW;9iQn*Us+(|59TlS6d2JFK6Yxl`IJS{@%aX zlnX$?yXyW69r)9mE;l6Hfwyp!zi%A=$NR02C{)Px^_NxC|{qepa31<91QD0^^yVu-q`EC1AT1-rI-wDAL#ZRboIDVZ>XjYc z-v}oeMHmGbum~?Np*wdQMW7i~5W+AQRSm&wNsuM@WCO1+Ko5T{n`?s$CH@U~A4-b- zYk08kHvD+I-LBzZV=@bjh<8r<&XG~-YjOubTIRRdEdEvCM{}IvSGQF*fot`C1PAb7 zNR%Fo4gS6jzzUph?(e(MHtl^JJE1fV2 zTH(wsxpsjP_8+zmEbQ++VB&>-WZc1er|IvDfPflR_;Ikmo(HY>2Df=yA9{H}uv_qJ z425RyRU>I67)KhWSNZGxO+{h|DPhz%*>HeGh(Q*@D!)zJ)m)aiQ$AY8Ik@Csz4;#MxXIxufk`pW$YD1QIJO_>$adQ(=S6OZrt2o)+`Uh*d!ivt z&(DF2P`UR7#Evd1fuCszJl}?}!hXf9F8gpu3zQ4a@2`dVIz{XV%#v=ygVDmkAOyhf$%DDHXJK+NyufU)0IKqMNWP7^qtBBD zlvyRJ4P`sC_1WEPW!k$85m+eDK5_UD^WAWiH+{VyBIQcGZ-T?i@hRjth4(5R-D8Fl z3FdK_{#rcC*jagM0lWdvg$~nqCi3aZEO41JVX!@Tn&2V24L+_T13Yu^ zbm8g2lPYHA@6N_-Ne0i@)_*Zah{TgJ^OVUW-TNjdAF>u~5O%SjV+u2PlJ(%#R0LfW zrib1;+{80H<^rB%dJ(a{-plelob7`U0j>gow?cir*J@#9m;uGKm@s&1c^7jAUQ-6c z&HWg7Wy&&$sDn^LTDl7pg(@k?hu8DE$c#lIR>M#XMZC1=Py?I5nx9vuG{1(yU&u34 zpKBx)u!9$rU}6zW_t8HV_3ll^yB`;%~)x&_w`M_>sMTjwfg< z>@?uN_(eNbUwlULpT}uY73&h=PJHd2xxAC3S<(QX621}m6DM*pW*-FmUFYE~T5_k~ zg%D(F-3Yc(!PIIxR^9cD}l~vAOfLz4LzIyP@IIGd7+3 zz_vxVvW!XX@eXT}{%T;-j(B40q+C0m8p*Zrr1++bCfNp_6thy(X7sC<%Uajjwuzb- zHB7~?i*0r8NUOtLE}1&_;UB5%FPP$N`|c0Xt@P&uh68D=f1dtlT{Ja>_iq}bQGQQP zzu;$C^5wFW{&gIL3^YxDY5#})FR_3jjxdC%w||Fu$|1t!Fo@24i}0*JNVE})R{FEi z!9U_(OU?Kl!djY-Q*AT;uD}Xf4!jBJ0{yQp(bLY~oWN3t!;YS{()qczASZHNl9o(3 zjB|~(IQ1qVhtHRI14YiVabX(EYX$Bk5_12MM0xgntfhR_c^E?Z_Y!;)qmT20CEY4K zlhJSe-*j9D!3OBdP}Jq~a|h0|e4VfpJqiP}M7%yF^J%yLc{zKxu?U<|)a7$?QtF&1 zGSfQf>xNd*tuu3;X2$=D?8#U;jEtq$+O6uFCzd%C=l>aaCd)(k{m2OLvqkm2Qw)8J z=JfDCt3w^`68H{)KUn1;dnt6-B2w9kovT0CoS{0&DLn+A9RUp#i8-}>t6)OC2A{u@8N S`riz5^52&Dzt8_V3;cggJ8ahg literal 0 HcmV?d00001 diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll.meta new file mode 100644 index 0000000..cc71901 --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 86e52029f9c9fe145938a6c4be2a93da +timeCreated: 1684393114 +licenseType: Free +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 1 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.pdb.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.pdb.meta new file mode 100644 index 0000000..ba255ec --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.pdb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c055be5d55ae379449583e9c0d0e1794 +timeCreated: 1684393109 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml new file mode 100644 index 0000000..9f96910 --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml @@ -0,0 +1,528 @@ + + + + ProtoPromiseUnityHelpers + + + + + Yielder used to wait for a yield instruction to complete in the form of a Promise, using Unity's coroutines. + + + + + Returns a that will resolve after the has completed. + + The yield instruction to wait for. + The instance on which the will be ran. + The used to stop the internal wait and cancel the promise. + + If is provided, the coroutine will be ran on it, otherwise it will be ran on the singleton PromiseYielder instance. + + + + + Returns a that will resolve after 1 frame. + + The instance on which the wait will be ran. + + If is provided, the coroutine will be ran on it, otherwise it will be ran on the singleton PromiseYielder instance. + + + + + Returns a that will complete after 1 frame. + + + + + Returns a that will complete after the specified number of frames have passed. + + How many frames to wait for. + + + + Returns a that will complete after the specified timespan has passed, using scaled time. + + How much time to wait for. + + + + Returns a that will complete after the specified timespan has passed, using unscaled, real time. + + How much time to wait for. + + + + Returns a that will complete when the supplied delegate returns true. + + The function that will be ran to determine if the wait should complete. + + + + Returns a that will complete when the supplied delegate returns true. + + The value that will be passed to the delegate. + The function that will be ran to determine if the wait should complete. + + + + Returns a that will complete when the supplied delegate returns false. + + The function that will be ran to determine if the wait should complete. + + + + Returns a that will complete when the supplied delegate returns false. + + The value that will be passed to the delegate. + The function that will be ran to determine if the wait should complete. + + + + Returns a that will complete when the is complete. + + + + + Returns a that will complete at the next end of frame. + + + + + Returns a that will complete at the next fixed update. + + + + + Contains instructions returned by functions. + + + + + Awaiter used to wait for a single frame to pass. + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the operation is complete. + This property is intended for compiler use rather than use directly in code. + false + + + Called after the operation has completed. + This property is intended for compiler use rather than use directly in code. + + + Schedules the continuation. + The action to invoke when the operation completes. + This property is intended for compiler use rather than use directly in code. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Await instruction used to wait a number of frames. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait an amount of time, scaled to the game clock. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait an amount of time, using unscaled, real time. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait until a condition is true. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait until a condition is true. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait while a condition is true. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait while a condition is true. + + + + + Gets a new . + + + + + Converts this to a . + + + + + Await instruction used to wait for an . + + + + + Gets a new . + + + + + Converts this to a . + + + + + Awaiter used to wait for a context (FixedUpdate, EndOfFrame). + + + + Gets the awaiter for this. + This method is intended for compiler use rather than use directly in code. + this + + + Gets whether the operation is complete. + This property is intended for compiler use rather than use directly in code. + false + + + Called after the operation has completed. + This property is intended for compiler use rather than use directly in code. + + + Schedules the continuation. + The action to invoke when the operation completes. + This property is intended for compiler use rather than use directly in code. + + + Schedules the continuation onto the associated with this . + The action to invoke when the await operation completes. + This property is intended for compiler use rather than use directly in code. + The has already been awaited or forgotten. + + + + Interface used to await a condition. + + + + + Continues the async function when it returns true. + + + + + Interface used to await a condition with progress. + + + + + Continues the async function when it returns true. Progress may be reported. + + + + + Awaiter extensions facilitating the `await` keyword on await instructions. + + + + + Helper interface intended for internal use. + + + + + Returns self. + + + + + Gets whether this is complete. + + + + + Completes the await. + + + + + Awaiter facilitating the `await` keyword on await instructions. + + + + + Creates a new awaiter wrapping the instruction. + + + + + Creates a new awaiter wrapping the , with cancelation. + + + + + Returns a duplicate awaiter with cancelation. + + + + + Gets whether this is complete. + + + + + Returns self. + + + + + Schedules the continuation. + + + + + Schedules the continuation. + + + + + Completes the await. + + + + + Gets an awaiter wrapping the . + + + + + Gets an awaiter wrapping the , with cancelation. + + + + + Converts the to a . + + + + + Converts the to a . + + + + + Awaiter extensions facilitating the `await` keyword on await instructions. + + + + + Awaiter facilitating the `await` keyword on await instructions. + + + + + Creates a new awaiter wrapping the . + + + + + Creates a new awaiter wrapping the , with cancelation. + + + + + Returns a duplicate awaiter with cancelation. + + + + + Gets whether this is complete. + + + + + Returns self. + + + + + Schedules the continuation. + + + + + Schedules the continuation. + + + + + Completes the await. + + + + + Gets an awaiter wrapping the . + + + + + Gets an awaiter wrapping the , with cancelation. + + + + + Gets an awaiter wrapping the , with progress reported to the `async Promise` function, optionally with cancelation. + + + + + Gets an awaiter wrapping the , with progress reported to the `async Promise` function, optionally with cancelation. + + + + + Converts the to a . + + + + + Extensions to convert Promises to Yield Instructions for Coroutines. + + + + + Convert the to a . + + + + + Convert the to a . + + + + + Yield instruction that can be yielded in a coroutine to wait until the it came from has settled. + + + + + The state of the this came from. + + The state. + + + + Is the Promise still pending? + + + + + Get the result. If the Promise resolved successfully, this will return without error. + If the Promise was rejected or canceled, this will throw the appropriate exception. + + + + + Adds this object back to the pool if object pooling is enabled. + Don't try to access it after disposing! Results are undefined. + + Call when you are finished using the + . The method leaves the + in an unusable state. After calling + , you must release all references to the + so the garbage collector can reclaim the memory + that the was occupying. + + + + Yield instruction that can be yielded in a coroutine to wait until the it came from has settled. + An instance of this should be disposed when you are finished with it. + + + + + Get the result. If the Promise resolved successfully, this will return the result of the operation. + If the Promise was rejected or canceled, this will throw the appropriate exception. + + + + diff --git a/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml.meta b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml.meta new file mode 100644 index 0000000..163da04 --- /dev/null +++ b/demo/Assets/Packages/ProtoPromiseUnityHelpers.2.5.0/lib/net35/Release/ProtoPromiseUnityHelpers.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 122c7b15b4f8ceb4485248f5f7ffee64 +timeCreated: 1684393129 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/demo/Assets/Packages/Proyecto26.RestClient.2.6.2/lib/net35/Proyecto26.RestClient.dll b/demo/Assets/Packages/Proyecto26.RestClient.2.6.2/lib/net35/Proyecto26.RestClient.dll index a1421738b89f85ddb6ac36a6b3fb2f4e31b0e279..438287d6709605c7063f617beca2ddeef9cf6104 100755 GIT binary patch literal 29184 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 @@ -25,12 +24,11 @@ public static Promise Request(RequestHelper options) /// /// Returns a promise for a value of a specified type. /// The options of the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Request(RequestHelper options) + public static Promise Request(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Request(options, GetCallback(options, deferred)); - return deferred.Promise; + return HttpBase.DefaultUnityWebRequestAsync(options, cancelationToken); } /// @@ -38,7 +36,8 @@ public static Promise Request(RequestHelper options) /// /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. - public static Promise Get(string url) + /// The token used to abort the request. + public static Promise Get(string url, CancelationToken cancelationToken = default(CancelationToken)) { return Get(new RequestHelper { Uri = url }); } @@ -48,11 +47,11 @@ public static Promise Get(string url) /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Get(RequestHelper options) + /// The token used to abort the request. + public static Promise Get(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Get(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbGET; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } /// @@ -61,7 +60,7 @@ public static Promise Get(RequestHelper options) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// The element type of the response. - public static Promise Get(string url) + public static Promise Get(string url, CancelationToken cancelationToken = default(CancelationToken)) { return Get(new RequestHelper { Uri = url }); } @@ -71,12 +70,12 @@ public static Promise Get(string url) /// /// Returns a promise for a value of a specified type. /// The options of the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Get(RequestHelper options) + public static Promise Get(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Get(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbGET; + return HttpBase.DefaultUnityWebRequestAsync(options, cancelationToken); } /// @@ -84,8 +83,9 @@ public static Promise Get(RequestHelper options) /// /// Returns a promise for an array of values. /// A string containing the URL to which the request is sent. + /// The token used to abort the request. /// The element type of the array. - public static Promise GetArray(string url) + public static Promise GetArray(string url, CancelationToken cancelationToken = default(CancelationToken)) { return GetArray(new RequestHelper { Uri = url }); } @@ -95,12 +95,12 @@ public static Promise GetArray(string url) /// /// Returns a promise for an array of values. /// The options of the request. + /// The token used to abort the request. /// The element type of the array. - public static Promise GetArray(RequestHelper options) + public static Promise GetArray(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - GetArray(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbGET; + return HttpBase.DefaultUnityWebRequestArrayAsync(options, cancelationToken); } /// @@ -109,7 +109,8 @@ public static Promise GetArray(RequestHelper options) /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. - public static Promise Post(string url, object body) + /// The token used to abort the request. + public static Promise Post(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return Post(new RequestHelper { Uri = url, Body = body }); } @@ -120,7 +121,8 @@ public static Promise Post(string url, object body) /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. - public static Promise Post(string url, string bodyString) + /// The token used to abort the request. + public static Promise Post(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return Post(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -130,11 +132,11 @@ public static Promise Post(string url, string bodyString) /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Post(RequestHelper options) + /// The token used to abort the request. + public static Promise Post(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Post(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbPOST; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } /// @@ -143,8 +145,9 @@ public static Promise Post(RequestHelper options) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Post(string url, object body) + public static Promise Post(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return Post(new RequestHelper { Uri = url, Body = body }); } @@ -155,8 +158,9 @@ public static Promise Post(string url, object body) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Post(string url, string bodyString) + public static Promise Post(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return Post(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -166,12 +170,12 @@ public static Promise Post(string url, string bodyString) /// /// Returns a promise for a value of a specified type. /// The options of the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Post(RequestHelper options) + public static Promise Post(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Post(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbPOST; + return HttpBase.DefaultUnityWebRequestAsync(options, cancelationToken); } /// @@ -180,8 +184,9 @@ public static Promise Post(RequestHelper options) /// Returns a promise for an array of values. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the array. - public static Promise PostArray(string url, object body) + public static Promise PostArray(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return PostArray(new RequestHelper { Uri = url, Body = body }); } @@ -192,8 +197,9 @@ public static Promise PostArray(string url, object body) /// Returns a promise for an array of values. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the array. - public static Promise PostArray(string url, string bodyString) + public static Promise PostArray(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return PostArray(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -203,12 +209,12 @@ public static Promise PostArray(string url, string bodyString) /// /// Returns a promise for an array of values. /// The options of the request. + /// The token used to abort the request. /// The element type of the array. - public static Promise PostArray(RequestHelper options) + public static Promise PostArray(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - PostArray(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbPOST; + return HttpBase.DefaultUnityWebRequestArrayAsync(options, cancelationToken); } /// @@ -217,7 +223,8 @@ public static Promise PostArray(RequestHelper options) /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. - public static Promise Put(string url, object body) + /// The token used to abort the request. + public static Promise Put(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return Put(new RequestHelper { Uri = url, Body = body }); } @@ -228,7 +235,8 @@ public static Promise Put(string url, object body) /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. - public static Promise Put(string url, string bodyString) + /// The token used to abort the request. + public static Promise Put(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return Put(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -238,11 +246,11 @@ public static Promise Put(string url, string bodyString) /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Put(RequestHelper options) + /// The token used to abort the request. + public static Promise Put(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Put(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbPUT; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } /// @@ -251,8 +259,9 @@ public static Promise Put(RequestHelper options) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Put(string url, object body) + public static Promise Put(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return Put(new RequestHelper { Uri = url, Body = body }); } @@ -263,8 +272,9 @@ public static Promise Put(string url, object body) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Put(string url, string bodyString) + public static Promise Put(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return Put(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -274,12 +284,12 @@ public static Promise Put(string url, string bodyString) /// /// Returns a promise for a value of a specified type. /// The options of the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Put(RequestHelper options) + public static Promise Put(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Put(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbPUT; + return HttpBase.DefaultUnityWebRequestAsync(options, cancelationToken); } /// @@ -288,7 +298,8 @@ public static Promise Put(RequestHelper options) /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. - public static Promise Patch(string url, object body) + /// The token used to abort the request. + public static Promise Patch(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return Patch(new RequestHelper { Uri = url, Body = body }); } @@ -299,7 +310,8 @@ public static Promise Patch(string url, object body) /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. - public static Promise Patch(string url, string bodyString) + /// The token used to abort the request. + public static Promise Patch(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return Patch(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -309,11 +321,11 @@ public static Promise Patch(string url, string bodyString) /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Patch(RequestHelper options) + /// The token used to abort the request. + public static Promise Patch(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Patch(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = "PATCH"; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } /// @@ -322,8 +334,9 @@ public static Promise Patch(RequestHelper options) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// A plain object that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Patch(string url, object body) + public static Promise Patch(string url, object body, CancelationToken cancelationToken = default(CancelationToken)) { return Patch(new RequestHelper { Uri = url, Body = body }); } @@ -334,8 +347,9 @@ public static Promise Patch(string url, object body) /// Returns a promise for a value of a specified type. /// A string containing the URL to which the request is sent. /// A string that is sent to the server with the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Patch(string url, string bodyString) + public static Promise Patch(string url, string bodyString, CancelationToken cancelationToken = default(CancelationToken)) { return Patch(new RequestHelper { Uri = url, BodyString = bodyString }); } @@ -345,12 +359,12 @@ public static Promise Patch(string url, string bodyString) /// /// Returns a promise for a value of a specified type. /// The options of the request. + /// The token used to abort the request. /// The element type of the response. - public static Promise Patch(RequestHelper options) + public static Promise Patch(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Patch(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = "PATCH"; + return HttpBase.DefaultUnityWebRequestAsync(options, cancelationToken); } /// @@ -358,7 +372,8 @@ public static Promise Patch(RequestHelper options) /// /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. - public static Promise Delete(string url) + /// The token used to abort the request. + public static Promise Delete(string url, CancelationToken cancelationToken = default(CancelationToken)) { return Delete(new RequestHelper { Uri = url }); } @@ -368,11 +383,11 @@ public static Promise Delete(string url) /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Delete(RequestHelper options) + /// The token used to abort the request. + public static Promise Delete(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Delete(options, GetCallback(options, deferred)); - return deferred.Promise; + options.Method = UnityWebRequest.kHttpVerbDELETE; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } /// @@ -380,7 +395,8 @@ public static Promise Delete(RequestHelper options) /// /// Returns a promise for a value of type ResponseHelper. /// A string containing the URL to which the request is sent. - public static Promise Head(string url) + /// The token used to abort the request. + public static Promise Head(string url, CancelationToken cancelationToken = default(CancelationToken)) { return Head(new RequestHelper { Uri = url }); } @@ -390,37 +406,11 @@ public static Promise Head(string url) /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Head(RequestHelper options) + /// The token used to abort the request. + public static Promise Head(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Head(options, GetCallback(options, deferred)); - return deferred.Promise; - } - - #endregion - - #region Helpers - - private static Action GetCallback(RequestHelper options, Promise.Deferred deferred) - { - options.ProgressCallback += deferred.ReportProgress; - return (RequestException error, ResponseHelper response) => - { - if (error != null) { deferred.Reject(error); } else { deferred.Resolve(response); } - }; - } - - private static Action GetCallback(RequestHelper options, Promise.Deferred deferred) - { - options.ProgressCallback += deferred.ReportProgress; - return (RequestException error, ResponseHelper response, T body) => - { - if (error != null && response != null) - { - error.ServerMessage = response.Error ?? error.Message; - } - if (error != null) { deferred.Reject(error); } else { deferred.Resolve(body); } - }; + options.Method = UnityWebRequest.kHttpVerbHEAD; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } #endregion

Mfo_`AIssew(QJl$udY>MfxgW6c7qA+^*coe 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 diff --git a/demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35/RSG.Promise.dll b/demo/Assets/Packages/RSG.Promise.3.0.1/lib/net35/RSG.Promise.dll deleted file mode 100755 index 5adc469863046d64e8a7e4db4f8b59630dd9dc26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43520 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 - + + \ No newline at end of file diff --git a/src/Proyecto26.RestClient/Helpers/HttpBase.cs b/src/Proyecto26.RestClient/Helpers/HttpBase.cs index 0859ddc..019bc86 100644 --- a/src/Proyecto26.RestClient/Helpers/HttpBase.cs +++ b/src/Proyecto26.RestClient/Helpers/HttpBase.cs @@ -3,6 +3,7 @@ using UnityEngine; using UnityEngine.Networking; using Proyecto26.Common; +using Proto.Promises; namespace Proyecto26 { @@ -70,6 +71,69 @@ public static IEnumerator CreateRequestAndRetry(RequestHelper options, Action CreateRequestAndRetryAsync(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) + { + var deferred = Promise.NewDeferred(); + RequestAndRetry(deferred, options, cancelationToken.GetRetainer()); + return options.ProgressCallback == null + ? deferred.Promise + : deferred.Promise.Progress(options.ProgressCallback); + } + + // async/await would be cleaner, but it's not available in old .Net 3.5 runtime. + private static void RequestAndRetry(Promise.Deferred deferred, RequestHelper opts, CancelationToken.Retainer cancelationRetainer, int currentRetryCount = 0) + { + var webRequest = CreateRequest(opts); + PromiseYielder.WaitForAsyncOperation(webRequest.SendWebRequestWithOptions(opts)) + .ToPromise(cancelationRetainer.token) + .Progress(deferred, (def, progress) => def.ReportProgress(progress)) + .Then(ValueTuple.Create(deferred, opts, currentRetryCount, webRequest, cancelationRetainer), tuple => + { + var def = tuple.Item1; + var options = tuple.Item2; + var retries = tuple.Item3; + var request = tuple.Item4; + var retainer = tuple.Item5; + +#if UNITY_2020_2_OR_NEWER + bool isNetworkError = (request.result == UnityWebRequest.Result.ConnectionError); +#else + bool isNetworkError = request.isNetworkError; +#endif + var response = request.CreateWebResponse(); + if (request.IsValidRequest(options)) + { + DebugLog(options.EnableDebug, string.Format("RestClient - Response\nUrl: {0}\nMethod: {1}\nStatus: {2}\nResponse: {3}", options.Uri, options.Method, request.responseCode, options.ParseResponseBody ? response.Text : "body not parsed"), false); + retainer.Dispose(); + def.Resolve(response); + } + else if (!options.IsAborted && retries < options.Retries && (!options.RetryCallbackOnlyOnNetworkErrors || isNetworkError)) + { + if (options.RetryCallback != null) + { + options.RetryCallback(CreateException(options, request), retries); + } + PromiseYielder.WaitForRealTime(TimeSpan.FromSeconds(options.RetrySecondsDelay)) + .ToPromise() + .Then(tuple, tup => + { + DebugLog(tup.Item2.EnableDebug, string.Format("RestClient - Retry Request\nUrl: {0}\nMethod: {1}", tup.Item2.Uri, tup.Item2.Method), false); + RequestAndRetry(tup.Item1, tup.Item2, tup.Item5, tup.Item3 + 1); + }) + .Forget(); + } + else + { + var err = CreateException(options, request); + DebugLog(options.EnableDebug, err, true); + retainer.Dispose(); + def.Reject(err); + } + }) + .Finally(webRequest, request => request.Dispose()) + .Forget(); + } + private static UnityWebRequest CreateRequest(RequestHelper options) { var url = options.Uri.BuildUrl(options.Params); @@ -135,6 +199,27 @@ public static IEnumerator DefaultUnityWebRequest(RequestHelper option }); } + public static Promise DefaultUnityWebRequestAsync(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) + { + return CreateRequestAndRetryAsync(options, cancelationToken) + .Then(res => + { + try + { + if (res.StatusCode != HTTP_NO_CONTENT && res.Data != null && options.ParseResponseBody) + { + return JsonUtility.FromJson(res.Text); + } + return default(TResponse); + } + catch (Exception error) + { + DebugLog(options.EnableDebug, string.Format("RestClient - Invalid JSON format\nError: {0}", error.Message), true); + throw new RequestException(error.Message); + } + }); + } + public static IEnumerator DefaultUnityWebRequest(RequestHelper options, Action callback) { return CreateRequestAndRetry(options, (RequestException err, ResponseHelper res) => { @@ -156,5 +241,26 @@ public static IEnumerator DefaultUnityWebRequest(RequestHelper option }); } + public static Promise DefaultUnityWebRequestArrayAsync(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) + { + return CreateRequestAndRetryAsync(options, cancelationToken) + .Then(res => + { + try + { + if (res.StatusCode != HTTP_NO_CONTENT && res.Data != null && options.ParseResponseBody) + { + return JsonHelper.ArrayFromJson(res.Text); + } + return default(TResponse[]); + } + catch (Exception error) + { + DebugLog(options.EnableDebug, string.Format("RestClient - Invalid JSON format\nError: {0}", error.Message), true); + throw new RequestException(error.Message); + } + }); + } + } } diff --git a/src/Proyecto26.RestClient/RestClientPromise.cs b/src/Proyecto26.RestClient/RestClientPromise.cs index 9d2ca35..d946f35 100644 --- a/src/Proyecto26.RestClient/RestClientPromise.cs +++ b/src/Proyecto26.RestClient/RestClientPromise.cs @@ -1,5 +1,5 @@ using Proto.Promises; -using System; +using UnityEngine.Networking; namespace Proyecto26 { @@ -13,11 +13,10 @@ public static partial class RestClient /// /// Returns a promise for a value of type ResponseHelper. /// The options of the request. - public static Promise Request(RequestHelper options) + /// The token used to abort the request. + public static Promise Request(RequestHelper options, CancelationToken cancelationToken = default(CancelationToken)) { - var deferred = Promise.NewDeferred(); - Request(options, GetCallback(options, deferred)); - return deferred.Promise; + return HttpBase.CreateRequestAndRetryAsync(options, cancelationToken); } ///