7 while (this.done !== null)
8 await this.done.promise
10 done.promise = new Promise(
11 (resolve, reject) => {done.resolve = resolve}
24 BinarySemaphore = class {
30 done.promise = new Promise(
31 (resolve, reject) => {done.resolve = resolve}
38 while (this.done !== null)
39 await this.done.promise
41 done.promise = new Promise(
42 (resolve, reject) => {done.resolve = resolve}
48 if (this.done !== null)
51 done.promise = new Promise(
52 (resolve, reject) => {done.resolve = resolve}
69 constructor(title, detail, status) {
77 error instanceof Problem ?
79 new Problem('Bad request', (error.stack || error.message), 400)
84 api_call = async (endpoint, ...args) => {
85 let response = await fetch(
87 {method: 'POST', body: JSON.stringify(args)}
89 let result = await response.json()
91 throw new Problem(result.title, result.detail, result.status)