Skip to content

WebReflection/lie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@webreflection/lie

An optionally sync promise that directly passes along its value, particularly useful for any API that handles both synchronous and asynchronous use cases through explicit .then(...) invocation.

import lie from '@webreflection/lie';
// the lie signature:
// <T>(value: T) => Thenable<T>

lie(123)
  // invoked synchronously
  .then(value => {
    console.log('sync #1', value);
    return value * 2;
  })
  // invoked synchronously
  // because the result is an async function
  // the returned value will be a Promise this time
  .then(async value => {
    console.log('sync #2', value);
    return value * 2;
  })
  // this time is a Promise
  .then(value => {
    console.log('async #1', value);
  })
;

console.log('sync #1 and #2 already logged');
// async #1 going to be logged after

Note: a lie(Promise.resolve(123)), a lie(lie(123)), or even a lie({ then: able }) would simply pass through as result the provided value, as opposite of creating "lies of lies".

About

An optionally sync promise that directly passes along its value.

Resources

License

Stars

Watchers

Forks

Packages

No packages published