File tree Expand file tree Collapse file tree 4 files changed +26
-9
lines changed
Expand file tree Collapse file tree 4 files changed +26
-9
lines changed Original file line number Diff line number Diff line change 1+ import { IllegalStateError } from "./IllegalStateError" ;
2+
13export type DeferredPromiseState = "pending" | "resolved" | "rejected" ;
4+
25export type ResolveFunction < Data extends any , Result = void > = (
36 data : Data
47) => Result | PromiseLike < Result > ;
8+
59export type RejectFunction < Result = void > = (
610 reason ?: unknown
711) => Result | PromiseLike < Result > ;
@@ -31,8 +35,9 @@ export class DeferredPromise<Data extends any = void> {
3135 this . promise = new Promise < Data > ( ( resolve , reject ) => {
3236 this . resolve = ( data ) => {
3337 if ( this . state !== "pending" ) {
34- throw new TypeError (
35- `Cannot resolve a DeferredPromise: illegal state ("${ this . state } ")`
38+ throw new IllegalStateError (
39+ "Cannot resolve a DeferredPromise: illegal state" ,
40+ this . state
3641 ) ;
3742 }
3843
@@ -43,8 +48,9 @@ export class DeferredPromise<Data extends any = void> {
4348
4449 this . reject = ( reason ) => {
4550 if ( this . state !== "pending" ) {
46- throw new TypeError (
47- `Cannot reject a DeferredPromise: illegal state ("${ this . state } ")`
51+ throw new IllegalStateError (
52+ "Cannot reject a DeferredPromise: illegal state" ,
53+ this . state
4854 ) ;
4955 }
5056
Original file line number Diff line number Diff line change 1+ import { type DeferredPromiseState } from "./DeferredPromise" ;
2+
3+ export class IllegalStateError extends Error {
4+ constructor ( message : string , public readonly state : DeferredPromiseState ) {
5+ super ( message ) ;
6+ }
7+ }
Original file line number Diff line number Diff line change 1- export * from './DeferredPromise'
1+ export * from "./DeferredPromise" ;
2+ export * from "./IllegalStateError" ;
Original file line number Diff line number Diff line change 11import { DeferredPromise } from "../src" ;
2+ import { IllegalStateError } from "../src/IllegalStateError" ;
23
34describe ( "Promise-compliance" , ( ) => {
45 it ( 'can be listened to with ".then()"' , ( done ) => {
@@ -105,8 +106,9 @@ describe("resolve()", () => {
105106 promise . resolve ( 123 ) ;
106107
107108 expect ( ( ) => promise . resolve ( 456 ) ) . toThrow (
108- new TypeError (
109- 'Cannot resolve a DeferredPromise: illegal state ("resolved")'
109+ new IllegalStateError (
110+ "Cannot resolve a DeferredPromise: illegal state" ,
111+ "resolved"
110112 )
111113 ) ;
112114 } ) ;
@@ -117,8 +119,9 @@ describe("resolve()", () => {
117119 promise . reject ( ) ;
118120
119121 expect ( ( ) => promise . resolve ( 123 ) ) . toThrow (
120- new TypeError (
121- 'Cannot resolve a DeferredPromise: illegal state ("rejected")'
122+ new IllegalStateError (
123+ "Cannot resolve a DeferredPromise: illegal state" ,
124+ "rejected"
122125 )
123126 ) ;
124127 } ) ;
You can’t perform that action at this time.
0 commit comments